js数组对象的浅拷贝和深拷贝

浅拷贝就是将一个对象赋值给另一个对象,对象指向的是相同的存储空间,修改一个,另一个也会影响。

深拷贝就是将一个对象赋值给另一个对象的时候,对象指向的是不同的存储空间,修改一个,另一个不受影响。


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的,这就是我们想要的结果,修改一个数组对象属性,没有影响其它的数组对象属性。