我正在从引用对象中提取一些数据,并根据需要更改它,但由于某种原因,我的代码也在更改我引用的对象..
var obj = {name:"list of things", list:[{name:"thing", 1},{name:"other thing", 2}]};
function doStuff () {
var ref = obj;
for(var p=0;p<ref.list.length;p++){
ref.list.splice(1,1);
}
return ref;
}
出于某种原因,当我在代码中使用此结构时,它会更改“obj”和“ref”。似乎无法弄清楚
最佳答案
示例中的 obj
不是一个对象,它是对内存中某个位置的对象的引用。这就是为什么当您执行 ref=obj
时,您会获得对同一对象的另一个引用,因此更改对象 ref
引用与更改对象 obj 相同
引用文献。
您想要做的是克隆您的对象,因此您最终会得到两个不同的对象。 StackOverflow 和整个网络上有一些关于克隆的很好的答案。请随意使用其中任何一个。
关于Javascript正在改变只需要引用的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21993701/