w3schools something remove from example eliminar elemento array javascript arrays push

something - ¿Los objetos se insertan en una matriz en javascript profunda o superficial?



replace array javascript (2)

Depende de lo que estés presionando. Los objetos y matrices se presionan como un puntero al objeto original. Los tipos primitivos integrados como números o booleanos se envían como una copia. Entonces, como los objetos no se copian de ninguna manera, no hay una copia profunda o superficial para ellos.

Aquí hay un fragmento de trabajo que lo muestra:

var array = []; var x = 4; var y = {name: "test", type: "data", data: "2-27-2009"}; // primitive value pushes a copy of the value 4 array.push(x); // push value of 4 x = 5; // change x to 5 console.log(array[0]); // array still contains 4 because it''s a copy // object reference pushes a reference array.push(y); // put object y reference into the array y.name = "foo"; // change y.name property console.log(array[1].name); // logs changed value "foo" because it''s a reference

Pregunta bastante evidente ... Al usar .push () en una matriz en javascript, el objeto insertado en la matriz es un puntero (poco profundo) o el objeto real (profundo) independientemente del tipo.


jfriend00 está justo al lado de aquí, pero una pequeña aclaración: eso no significa que no puedas cambiar a qué apunta tu variable. Es decir, y inicialmente hace referencia a alguna variable que coloque en la matriz, pero luego puede tomar la variable llamada y , desconectarla del objeto que está en la matriz ahora, y conectar y (es decir, hacerla referencia ) algo completamente diferente sin cambiando el objeto al que ahora hace referencia la matriz .

http://jsfiddle.net/rufwork/5cNQr/6/

var array = []; var x = 4; var y = {name: "test", type: "data", data: "2-27-2009"}; // 1.) pushes a copy array.push(x); x = 5; document.write(array[0] + "<br>"); // alerts 4 because it''s a copy // 2.) pushes a reference array.push(y); y.name = "foo"; // 3.) Disconnects y and points it at a new object y = {}; y.name = ''bar''; document.write(array[1].name + '' :: '' + y.name + "<br>"); // alerts "foo :: bar" because y was a reference, but then // the reference was moved to a new object while the // reference in the array stayed the same (referencing the // original object) // 4.) Uses y''s original reference, stored in the array, // to access the old object. array[1].name = ''foobar''; document.write(array[1].name + "<br>"); // alerts "foobar" because you used the array to point to // the object that was initially in y.