需要了解javascript删除的工作原理

时间:2014-05-10 05:27:42

标签: javascript

我认为删除会从特定对象中删除对象属性。在下面的例子中,我将d对象分配给c并从c对象中删除属性。但该财产已从c和d中删除。

var d = {a:1,b:2,c:3};
var c = d;
delete c.c;
console.log(d);

返回Object {a = 1,b = 2}。

2 个答案:

答案 0 :(得分:1)

该代码中只有一个对象。对象在Javascript中通过引用分配,因此当您编写c = d时,cd都会引用完全相同的对象。当修改属性而不是删除它时,这可能更明显:

var d = {a:1,b:2,c:3};
var c = d;
c.c = 0;
console.log(d); Object {a: 1, b: 2, c: 0} 

如果需要对象的副本,则需要创建相同的新对象。这里有很多好的答案:What is the most efficient way to deep clone an object in JavaScript?

答案 1 :(得分:0)

var c = d之后,c和d指向同一组内存,因此更改为1将影响另一个。如果要复制对象的值,则必须复制它。