首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在javascript中将对象推入数组是深度复制还是浅复制?

在javascript中将对象推入数组是深度复制还是浅复制?
EN

Stack Overflow用户
提问于 2011-12-29 04:30:26
回答 1查看 50.6K关注 0票数 80

在javascript中对数组使用.push()非常不言自明,无论类型如何,推入数组的对象是指针(浅)还是实际对象( question...When )。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-29 04:43:58

这取决于你推的是什么。对象和数组作为指向原始对象的指针被推送。像数字或布尔值这样的内置原语类型被作为副本推送。因此,由于不会以任何方式复制对象,因此没有针对它们的深层或浅层复制。

下面是一个显示它的工作代码片段:

代码语言:javascript
复制
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
票数 139
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8660901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档