jQuery'delete'运算符也删除以前设置的对象

时间:2014-03-07 18:21:57

标签: javascript jquery delete-operator

您好,这是我的问题:

当我用另一个对象设置对象时,如下所示:

a = {"first":1, "second":2};
b = a;

然后我从" a"删除了一个属性。对象,它还删除了" b"对象

delete a.second;

继承人jsFiddle

4 个答案:

答案 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?