一个不言而喻的问题...当在javascript中的数组上使用.push()时,对象是指针(浅)还是实际对象(深)推入数组,而不管类型如何。 问题来源于stack overflow
这取决于您要推动什么。将对象和数组作为指向原始对象的指针进行推送。内置的原始类型(如数字或布尔值)将作为副本推送。因此,由于不以任何方式复制对象,因此没有深层或浅层对象。
这是显示它的工作片段:
var array = []; var x = 4; let 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
// object reference pushes a reference but object can still be referred to even though original variable is no longer within scope if (true) { let z = {name: "test", type: "data", data: "2-28-2019"}; array.push(z); }
console.log(array[2].name); // log shows value "test" since the pointer reference via the array is still within scope
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。