抱歉,但我在JavaScript方面不是很好, 我搜索但没找到答案,我希望你能帮助我。 我有这个代码
var obj = {
var1:[],
var2:[],
set1: function(){
this.var1.push(1);
},
set2 : function(){
this.var2 = this.var1;
}
};
obj.set1();
obj.set2();
obj.set1();
console.log(obj.var2);
我认为在控制台中会是 [1],但正确的是[1,1] 问题是如何在set2中将var2设置为在控制台中有[1]。 我认为this.var2 = this.var1;是引用,但我真的需要将var2设置为var1
答案 0 :(得分:2)
是的,您可以通过引用分配它。您需要复制数组。我稍微修改了你的代码。
var obj = {
var1:[],
var2:[],
set1: function(){
this.var1.push(1);
},
set2 : function(){
this.var2 = this.var1.slice()
}
};
obj.set1();
obj.set2();
obj.set1();
console.log(obj.var2);

array.slice()方法将返回一个具有相同值的新数组。