在JavaScript中克隆对象与使用新关键字
我正在阅读一本关于Javascript的教科书,这里有一个对象的浅层克隆与深度克隆的例子 谁能给我举个例子,为什么我想克隆一个对象而不是使用“new”关键字在JavaScript中克隆对象与使用新关键字,javascript,Javascript,我正在阅读一本关于Javascript的教科书,这里有一个对象的浅层克隆与深度克隆的例子 谁能给我举个例子,为什么我想克隆一个对象而不是使用“new”关键字 例如,在一个简单的游戏中,如果我有10个敌人对象,我会创建一个名为“敌人”的构造器,并使用“new”关键字创建新的敌人 新操作符根据类/函数中提到的细节创建对象的实例。现在假设您已经创建了一个对象,并更改/添加了一些属性。 下次使用new关键字时,将不会得到上面所做的更改。克隆实际上会给您一个具有更改值的新对象 让我们举一个例子: func
例如,在一个简单的游戏中,如果我有10个敌人对象,我会创建一个名为“敌人”的构造器,并使用“new”关键字创建新的敌人 新操作符根据类/函数中提到的细节创建对象的实例。现在假设您已经创建了一个对象,并更改/添加了一些属性。 下次使用new关键字时,将不会得到上面所做的更改。克隆实际上会给您一个具有更改值的新对象 让我们举一个例子:
function Car() {}
myCar = new Car();
console.log(myCar.color); // you'll get undefined
myCar.color = "red";
console.log(myCar.color); // you'll get red
// now create another object
yourCar = new Car();
console.log(yourCar.color); // you'll still get undefined
// if you clone
yourCar = clone(myCar) // assume you have some clone method
console.log(yourCar.color); // Now you'll get red
在你的情况下,如果你已经创建了10个“敌人”对象。在游戏中的某个时候,你可能已经为那些敌人设置了一些属性。如果使用“新建”操作符,这些更改将不会反映在新对象中。但是,如果您克隆了敌人对象,您将获得一个新对象以及之前所做的更改
如果您对浅拷贝与深拷贝感兴趣,可以在函数克隆(obj){返回JSON.parse(JSON.encode(obj));}