我不确定这是一个错误,还是我对Javascript有完全的误解,但这就是:
我在其中包含一个带有两个数组的对象,一个表示当前的ID队列,另一个表示ID的总队列(假设情况)
var mainObject = {
object1:[],
object2:[]
};
在一个函数中,我们将两个属性数组设置为相同的变量,该变量在我们开始处理队列之前保存所需的数组。
var randomVar = [1,2,3,4];
mainObject.object1 = randomVar;
mainObject.object2 = randomVar;
现在我们想要使用splice方法从object1中删除第一个索引,同时将它保留在对象2上。
mainObject.object1.splice(0,1);
对象的结果现在如下:
mainObject = {
object1:[2,3,4],
object2:[2,3,4]
};
意味着当我们只让Javascript运行一次时,两个属性都被拼接了。
请参阅JS Fiddle了解实例: https://jsfiddle.net/ypow6y8g/
是否有我遗漏的东西,或者这只是松散的JS的另一个晚上?
答案 0 :(得分:5)
您有一个数组和两个变量,其值是对该数组的引用。当您修改其中一个变量的值时,您可以修改另一个变量的值。
如果您希望阵列独立,请克隆一个:
var randomVar = [1,2,3,4];
mainObject.object1 = randomVar;
mainObject.object2 = randomVar.slice(); // slice returns a new array