Node.js什么是对象克隆?

时间:2014-06-27 11:35:10

标签: javascript node.js object

我想知道为什么我们必须克隆对象而不是直接分配。

 var obj1 = {x: 5, y:5};
 var obj2 = obj1;
 obj2.x = 6;
 console.log(obj1.x); // logs 6

我已经得到了解决方案,但我想知道为什么obj2工作 像参考变量?

1 个答案:

答案 0 :(得分:1)

让我们一步一步看看这段代码的作用:

1 -

var obj1 = {x: 5, y:5};

创建一个对象{x: 5, y:5}并将其引用存储在变量obj1

2 -

var obj2 = obj1;

创建变量obj2并将obj1的值归属于它。由于obj1的值是对象的引用,因此obj2现在将指向同一个对象。

3 -

obj2.x = 6;

更改所引用对象中属性x的值

4 -

console.log(obj1.x); // logs 6

x引用的对象中打印obj1属性。当obj1obj2指向同一位置时,输出为6


这与使用对象引用的任何语言都具有相同的行为。 Java,C,C ++,C#等。在OOP语言中,您通常使用clone()方法进行字段副本。但就JS而言,这种方法并不存在,您需要对每个元素进行深层复制。你可以在这里找到关于如何在JS中克隆元素的一组很好的答案:What is the most efficient way to deep clone an object in JavaScript?