为什么getPrototypeOf会返回Object {}

时间:2014-01-05 00:12:11

标签: javascript prototype

请考虑以下代码段:

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 {}。

这是怎么回事?

2 个答案:

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