当前位置:  开发笔记 > 编程语言 > 正文

具有相同值的Javascript对象属性在它们不应该(拼接)时经历相同的更改

如何解决《具有相同值的Javascript对象属性在它们不应该(拼接)时经历相同的更改》经验,为你挑选了1个好方法。

我不确定这是一个错误,还是我对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一起度过的夜晚?



1> Denys Ségure..:

您有一个数组和两个变量,其值是对该数组的引用.当您修改其中一个变量的值时,您可以修改另一个变量的值,因为它们是相同的.

如果您希望阵列是独立的,请克隆一个:

var randomVar = [1,2,3,4];
mainObject.object1 = randomVar;
mainObject.object2 = randomVar.slice(); // slice returns a new array

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有