我不确定这是一个错误,还是我对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一起度过的夜晚?
您有一个数组和两个变量,其值是对该数组的引用.当您修改其中一个变量的值时,您可以修改另一个变量的值,因为它们是相同的.
如果您希望阵列是独立的,请克隆一个:
var randomVar = [1,2,3,4]; mainObject.object1 = randomVar; mainObject.object2 = randomVar.slice(); // slice returns a new array