Javascript JS:相关对象

Javascript JS:相关对象,javascript,oop,Javascript,Oop,情景: -填充对象1 -将object1的内容复制到object2 -从object1中删除元素 现在的结果是: -object1和object2都删除了1个元素 预期结果: -object1应该比object2少1个元素 守则: var object1 = new Object(); object1['key_one'] = 'value_1'; object1['key_two'] = 'value_2'; object1['key_three'] = 'value_3'; obje

情景: -填充对象1 -将object1的内容复制到object2 -从object1中删除元素

现在的结果是: -object1和object2都删除了1个元素

预期结果: -object1应该比object2少1个元素

守则:

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'];

我做错了什么?

您的代码没有进行任何复制<代码>对象2只是一个新的空对象。试试这个:

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"];
现在
object2
object1
的副本,但是从
object1
中删除属性不会影响
object2


希望这是有意义的。

在我看来,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'];

我看不出与多维数组有任何关系..您的代码与您的解释不匹配。我怀疑你做的是一个肤浅的复制,但你的代码根本没有复制。b亨利,你救了我一天,成功了!万分感谢!堆栈溢出规则@奥扎尔:那么,把这个答案标对。给那个人一些名声@Ozcar:别忘了使用
hasOwnProperty
。是的,如果你有一个修改
对象的代码库。prototype
,那么
hasOwnProperty
是很重要的。