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

为什么要深度克隆JavaScript对象而不仅仅是复制?,javascript,copy,clone,Javascript,Copy,Clone,深度克隆JavaScript对象有什么意义?如果您想要一个副本,为什么不声明另一个变量并将其值设置为原始对象呢 基本上,您为什么要这样做: var person = {name: "Ben", age: 23}; var clone = $(person).clone(); 当这看起来更简单时: var person1 = {name: "Ben", age: 23}; clone = person1; 因为如果你没有: clone.name = "Tom"; console.log(per

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

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

var person = {name: "Ben", age: 23};
var clone = $(person).clone();
当这看起来更简单时:

var person1 = {name: "Ben", age: 23};
clone = person1;
因为如果你没有:

clone.name = "Tom";
console.log(person.name) => "Tom"
看,它将是相同的对象,具有不同的名称。

因为如果您没有:

clone.name = "Tom";
console.log(person.name) => "Tom"
看,它将是相同的对象,具有不同的名称。

因为如果您没有:

clone.name = "Tom";
console.log(person.name) => "Tom"
看,它将是相同的对象,具有不同的名称。

因为如果您没有:

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

注意,它将是相同的对象,具有不同的名称。

赋值案例:

var person1 = {name: "Ben", age: 23};
var clone = person1;
var person = {name: "Ben", age: 23};
var clone = $(person).clone();
当使用对象向新变量赋值时,该新变量将包含对该对象的引用。在这种情况下,变量“clone”将引用与person1相同的对象。所以基本上person1和clone都指向同一个对象,对任一变量所做的任何更改都将更改它们都指向的person对象

克隆案例:

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

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

赋值案例:

var person1 = {name: "Ben", age: 23};
var clone = person1;
var person = {name: "Ben", age: 23};
var clone = $(person).clone();
当使用对象向新变量赋值时,该新变量将包含对该对象的引用。在这种情况下,变量“clone”将引用与person1相同的对象。所以基本上person1和clone都指向同一个对象,对任一变量所做的任何更改都将更改它们都指向的person对象

克隆案例:

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

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

赋值案例:

var person1 = {name: "Ben", age: 23};
var clone = person1;
var person = {name: "Ben", age: 23};
var clone = $(person).clone();
当使用对象向新变量赋值时,该新变量将包含对该对象的引用。在这种情况下,变量“clone”将引用与person1相同的对象。所以基本上person1和clone都指向同一个对象,对任一变量所做的任何更改都将更改它们都指向的person对象

克隆案例:

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

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

赋值案例:

var person1 = {name: "Ben", age: 23};
var clone = person1;
var person = {name: "Ben", age: 23};
var clone = $(person).clone();
当使用对象向新变量赋值时,该新变量将包含对该对象的引用。在这种情况下,变量“clone”将引用与person1相同的对象。所以基本上person1和clone都指向同一个对象,对任一变量所做的任何更改都将更改它们都指向的person对象

克隆案例:

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

在这里,对象person被克隆,并返回对新对象的引用,该对象具有与person对象相同的确切属性。因此,这意味着person和clone都包含对其自身唯一对象的引用,并且对其中一个对象所做的更改不会影响另一个对象。

那么更改person也会更改克隆?是的,它只是一个别名那么更改person也会更改克隆?是的,它只是一个别名所以改变人也会改变克隆人?是的,它只是一个别名