我在对象中调用属性,当我更新这个属性时,属性也是更新。
object =
{
path : [1,2,3,4],
test: function()
{
var destination = this.path;
destination[3] = 99;
}
}
this.path [3]返回99
获取数据的正确方法是什么,而不是参考?
答案 0 :(得分:1)
答案 1 :(得分:0)
因为当变量中有对象时,变量不包含对象的数据。相反,它包含对内存中对象数据的引用。
然后,var destination = this.path;
只复制引用,而不是数据。如果你修改其中一个变量,两者都会受到影响。
如果要复制对象的数据,可以使用
function extend(obj, props) {
for(var i in props) if(props.hasOwnProperty(i))
obj[i] = props[i];
}
var copy = extend({}, obj);
或者您也可以尝试继承:
var copy = Object.create(obj);
或者在这种情况下,因为它是一个数组,所以更好地使用slice
:
var copy = arr.slice();