Javascript JS:相关对象
情景: -填充对象1 -将object1的内容复制到object2 -从object1中删除元素 现在的结果是: -object1和object2都删除了1个元素 预期结果: -object1应该比object2少1个元素 守则: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
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
是很重要的。