JavaScript:使用Object.create时最大的优势是什么

时间:2018-07-03 08:35:10

标签: javascript prototype prototypal-inheritance

我们可以简单地分配一个值而不使用Object.create吗?

Rectangle.prototype = Shape.prototype;
Rectangle.prototype = 
Object.create(Shape.prototype)

以上两个语句有什么区别?

1 个答案:

答案 0 :(得分:2)

Object.create()方法使用现有对象提供新创建的对象的 proto 来创建新对象。因此,如果您直接为一个对象分配一个值,那么这里所分配的对象也可能会发生变异。

let k = {a:12, b:34};
let j = k;
console.log(`k before mutation ${JSON.stringify(k)}`);
j.b = "Mutated";//Updating j changes k too
console.log(`k after mutation ${JSON.stringify(k)}`);

其中Object.create不会突变

let k = {a: 123, b: 34};
let j = Object.create(k);
console.log(`k before mutation ${JSON.stringify(k)}`);
j.b = "this won't mutate k";
console.log(`k after mutation ${JSON.stringify(k)}`);