gpt4 book ai didi

javascript - Node.js 什么是对象克隆?

转载 作者:行者123 更新时间:2023-12-03 12:21:05 25 4
gpt4 key购买 nike

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

 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 中克隆元素的很好的答案:What is the most efficient way to deep clone an object in JavaScript?

关于javascript - Node.js 什么是对象克隆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24450866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com