JS:相关对象

问题描述:

情景: - 填写object1 - 复制的object1的内容,对象2 - 从object1JS:相关对象

结果现在删除元素: - 既object1和对象2有1元删...?!

祝愿结果: - object1应该有1元比对象2

的代码少:

var object1 = new Object(); 
object1['key_one'] = 'value_1'; 
object1['key_two'] = 'value_2'; 
object1['key_three'] = 'value_3'; 
object1['key_four'] = 'value_4'; 
var object2 = new Object(); 
object2 = object1; 
delete object1['key_three']; 

我在做什么错?

+0

我没有看到任何与多维数组的关系.. – mykhal 2010-08-12 19:22:16

+0

您的代码与您的解释不符。我怀疑你正在做一个浅拷贝,但你的代码根本没有拷贝。 – deinst 2010-08-12 19:22:32

你的代码不会做任何复制。 object2只是一个新的空对象。试试这个:

var object1 = { 
    key_one: "value_1", 
    key_two: "value_2", 
    key_three: "value_3", 
    key_four: "value_4" 
}; 
var object2 = {}; 
for (var prop in object1) { 
    object2[prop] = object1[prop]; 
} 
delete object1["key_three"]; 

现在object2object1副本,但是从object1删除的属性不会影响object2

希望是有道理的。

+0

卖淫,你救了我的一天,它的作品!感谢一千次!计算器规则! – Ozcar 2010-08-12 19:27:21

+0

@Ozcar:然后,将此答案标记为正确。给男人一些代表! – ajm 2010-08-12 19:33:14

+0

@Ozcar:不要忘记使用'hasOwnProperty'。 – 2010-08-12 19:39:47

它在我看来不像object2曾经收到object1的任何属性。你在正确的轨道上,但你需要复制它们。

var object1 = new Object(); 
object1['key_one'] = 'value_1'; 
object1['key_two'] = 'value_2'; 
object1['key_three'] = 'value_3'; 
object1['key_four'] = 'value_4'; 

var object2 = new Object(); 
for(var i in object1){ 
    object2[i] = object1[i]; 
} 
delete object1['key_three'];