浅拷贝就是将一个对象赋值给另一个对象,对象指向的是相同的存储空间,修改一个,另一个也会影响。
深拷贝就是将一个对象赋值给另一个对象的时候,对象指向的是不同的存储空间,修改一个,另一个不受影响。
var s = Array(100).fill({})
通过这样可以初始化一个长度为100的对象数组,但是我们修改一个对象属性的时候,所有对象的属性都会发生变化
比如我只想给第一个数组添加一个竖向 s[0].attr = 3;
这样执行后,我们所有数组都会添加一个attr属性,s[1].attr也会有个attr属性,且它的值为3.
那么我们想要不同数组的对象有不同的属性值,我们就需要使用深拷贝。
var n = 100;
var sample = new Array();
for (var i = 0; i < n; i++)
sample.push(new Object());
我们通过push一个new Object()这样,我们每个数组都是不一样的对象,我们再来对一个数组进行属性赋值。
sample[0].attr = 3;
我们
console.log(sample[1].attr)发现为undefined的,这就是我们想要的结果,修改一个数组对象属性,没有影响其它的数组对象属性。