猿问

JavaScript 深拷贝问题

本人初学者,在学习的过程中遇到了一个深拷贝相关的问题,JS代码如下:

并没有想我预期的那样成功深拷贝了每一个对象,从输出值可以看出两个对象数组之间还是存在联系,我试过使用jQuery的extend方法深拷贝一个对象字面量形式存放的对象数组,如:

[{

    name: "bill",

    age: 19

}, {

    name: "tom",

    age: 20

}]

在这种情况下修改personArr中的对象属性,allPerson不会随之变化,我很疑惑,出现这种情况的原因是什么?该如何解决?经过下午的尝试我猜测问题是在temp = new Person(data[i]);这一步上,是不是new的对象可能只是一个指向目标对象的指针?求高人指点


慕尼黑8549860
浏览 581回答 1
1回答

慕尼黑的夜晚无繁华

看了下jquery.extend源码可以发现在判断 jquery.isPlainObject(copy)时为false;即personArr[0]不是一个纯粹的对象(即字面量或者构造函数为Object)这时候执行的是target[ name ] = copy;即为对象的引用
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答