我们可以简单地分配一个值而不使用Object.create吗?
Rectangle.prototype = Shape.prototype;
Rectangle.prototype =
Object.create(Shape.prototype)
以上两个语句有什么区别?
答案 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)}`);