为什么要深度克隆JavaScript对象而不是仅仅复制?

时间:2014-03-06 22:35:43

标签: javascript copy clone

深度克隆JavaScript对象有什么意义?如果你想要一个副本,为什么不只是声明另一个变量并将其值设置为原始对象?

基本上,你为什么要这样做:

var person = {name: "Ben", age: 23};
var clone = $(person).clone();

当这看起来更简单时:

var person1 = {name: "Ben", age: 23};
clone = person1;

2 个答案:

答案 0 :(得分:2)

作业案例

var person1 = {name: "Ben", age: 23};
var clone = person1;

当使用对象对新变量进行赋值时,该新变量将包含对该对象的引用。在这种情况下,变量'clone'将引用与person1相同的对象。所以基本上person1和clone都指向同一个对象,对任一变量所做的任何更改都会改变它们指向的person对象。

克隆案例

var person = {name: "Ben", age: 23};
var clone = $(person).clone();

此处克隆对象person并返回对具有与person对象相同的确切属性的新对象的引用。所以,这意味着person和clone都包含对自己唯一对象的引用,对一个对象所做的更改不会影响另一个。

答案 1 :(得分:1)

因为如果你不这样做:

clone.name = "Tom";
console.log(person.name) => "Tom"

IOW,它将是同一个对象,名称不同。