Node.js什么是对象克隆?

Node.js What is object Cloning?

本文关键字:对象 js 什么 Node      更新时间:2023-09-26

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

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

我已经得到了解决方案,但我想知道为什么obj2工作就像一个引用变量?

让我们一步一步地看看这段代码是怎么做的:

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

obj1引用的对象中打印x属性。因为obj1obj2都指向同一个位置,所以输出是6


这与任何使用对象引用的语言都具有相同的行为。Java, C, c++, c#等。在OOP语言中,通常有一个clone()方法,它将逐个字段地进行复制。但是在JS的情况下,这样的方法不存在,您需要对每个元素进行深度复制。关于如何在JS中克隆元素,你可以在这里找到一组很好的答案:在JavaScript中深度克隆对象的最有效方法是什么?