【发布时间】:2017-12-04 19:00:56
【问题描述】:
我不明白为什么会发生这种行为。假设我定义了一个对象并制作了一个包含 3 个该对象的数组。如果我修改数组中的对象,它会影响对象的所有实例吗?有人可以解释这是为什么吗?另外,如何使用对象的独立“副本”创建一个数组以获得所需的行为?谢谢!
例子
testObject = {"value1":"a","value2":"b"};
objArray = [];
for(i=0; i < 3; i++){
var newobj = testObject; //make a new testObject
objArray.push(newobj); //push new object to array
}
delete objArray[0].value2 // Desired, delete value 2 ONLY from array object 0
objArray[2].value2 //Undefined? Why is value2 missing from object 2
testObject.value2 //Undefined? Why is value2 missing from original object?
【问题讨论】:
-
"
var newobj = testObject; //make a new testObject":评论有误。这不会创建新对象,而是共享现有对象。 -
顺便说一句,
value1和value2只是占位符名称,还是您实际上打算使用像数组一样的对象?
标签: javascript arrays node.js