您好,这是我的问题:
当我用另一个对象设置对象时,如下所示:
a = {"first":1, "second":2};
b = a;
然后我从" a"删除了一个属性。对象,它还删除了" b"对象
delete a.second;
继承人jsFiddle
答案 0 :(得分:1)
它将删除它,因为通过执行b = a
您不会克隆对象a
而只是复制对它的引用,所以实际上b
引用了同一个对象a
。
要克隆对象,您可以使用jQuery方法$.extend
:
var a = { first: 1, second: 2 };
var b = $.extend({}, a);
delete a.second;
console.log(a); // Object {first: 1}
console.log(b); // Object {first: 1, second: 2}
答案 1 :(得分:0)
是的,javascript中的对象仅通过引用分配。您必须手动将每个属性分配给新对象或克隆它。
答案 2 :(得分:0)
“设置”来自其他对象的对象只是将引用分配给同一对象。没有使用语句
创建新对象b = a;
之后,变量“a”和“b”都指向同一个对象。因此,通过一个或另一个变量进行的更改将发送到同一个对象。
答案 3 :(得分:0)
如果对象只包含简单属性(字符串,数字,布尔值),您还可以使用JSON来复制它。
var o = { prop1:是的, prop2:“你好” };
var copy = JSON.parse(JSON.stringify(o));
这里有关于克隆对象的长篇讨论:
What is the most efficient way to deep clone an object in JavaScript?