在JavaScript中克隆对象与新关键字

时间:2016-12-27 13:37:44

标签: javascript

我正在阅读有关Javascript的教科书,并且有一个浅层克隆与深度克隆对象的例子。

任何人都可以给我一个例子,为什么我想要克隆一个对象而不是使用' new'关键字?

例如,在一个简单的游戏中,如果我有10个敌人对象,我会创建一个名为“敌人”的构造函数。用新的'创造新的敌人。关键词。

1 个答案:

答案 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?

回答