请考虑以下代码段:
var organism = Object.create(null);
var mammal = Object.create(organism);
var cat = Object.create(mammal);
var Garfield = Object.create(cat)
Object.getPrototypeOf(Garfield) => Object {}
Object.getPrototypeOf(cat) => Object {}
Object.getPrototypeOf(mammal) => Object {}
我认为x = Object.create(y)会将x的原型设置为y。然而,看起来我创建的每个对象的原型都是Object {}。
这是怎么回事?
答案 0 :(得分:0)
如果你认为对象只是关联数组,那么有意义的是,你所做的就是从最初为空的对象创建新对象,它们都具有相同的原型 - 空对象的原型。
答案 1 :(得分:0)
你是正确的x = Object.create(y)
会将x的原型设置为y。
var organism = Object.create(null);
var mammal = Object.create(organism);
var cat = Object.create(mammal);
var Garfield = Object.create(cat)
console.log(Object.getPrototypeOf(Garfield) === cat);
console.log(Object.getPrototypeOf(cat) === mammal);
console.log(Object.getPrototypeOf(mammal) === organism);
我通常只使用Object.create来设置构造函数的原型,而不是创建实例:https://stackoverflow.com/a/16063711/1641941