我有对象的数组作为JavaScript数组按值传递不工作
var obj = {'name': 'John'};
var obj2 = {'name': 'Sam'};
var arr = [];
arr.push(obj);
arr.push(obj2);
现在我创建一个新的数组arr2
作为
arr2 = arr.slice();
现在,如果我改变arr2[0]['name'] = 'David';
然后arr1[0]['name']
也变成'David';
当arr2
对象值更改时,我们如何防止arr
的任何对象值发生更改。
您正在克隆数组,但不是对象;他们仍然是参考。 – elclanrs
有没有一种方法可以防止物体发生变化?什么是更好的方法 – user544079
您正在寻找** deep **克隆/复制:http://stackoverflow.com/search?q=%5Bjavascript%5D+array+deep+copy,https://www.google .com/search?q = javascript%20deep%20copy –