深度克隆JavaScript对象有什么意义?如果你想要一个副本,为什么不只是声明另一个变量并将其值设置为原始对象?
基本上,你为什么要这样做:
var person = {name: "Ben", age: 23};
var clone = $(person).clone();
当这看起来更简单时:
var person1 = {name: "Ben", age: 23};
clone = person1;
答案 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,它将是同一个对象,名称不同。