我正在阅读有关Javascript的教科书,并且有一个浅层克隆与深度克隆对象的例子。
任何人都可以给我一个例子,为什么我想要克隆一个对象而不是使用' new'关键字?
例如,在一个简单的游戏中,如果我有10个敌人对象,我会创建一个名为“敌人”的构造函数。用新的'创造新的敌人。关键词。
答案 0 :(得分:1)
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个敌人'宾语。在游戏中的某个时刻,您可能已经为这些敌人对象设置了一些属性。如果使用new运算符,则这些更改不会反映在新对象中。但是,如果您克隆敌人对象,您将获得一个新对象以及之前所做的更改。
如果您对浅版和深拷贝感兴趣,请在What is the difference between a deep copy and a shallow copy?
回答