【发布时间】:2017-06-24 13:10:04
【问题描述】:
我有一个cat,它继承自animal。
我希望 cat 是其构造函数和 animal 构造函数的实例。
animal 也是 cat 构造函数的一个实例。
var animal = {};
var cat = Object.create(animal);
console.log('cat instanceof animal.constructor: ' + (cat instanceof animal.constructor));
console.log(' cat instanceof cat.constructor: ' + (cat instanceof cat.constructor));
console.log('animal instanceof cat.constructor: ' + (animal instanceof cat.constructor));
为什么animal 是cat 的一个实例?
【问题讨论】:
-
试试
console.log(cat.constructor, cat.constructor === animal.constructor); -
@4castle 谢谢,但是为什么他们是平等的?我不明白我的派生类型和我的基类型如何具有相同的构造函数。
-
cat实际上并没有定义其constructor属性,因此当您尝试访问cat.constructor时,它使用原型对象的constructor值。 -
@4castle 好的,那么
Object.create方法将设置新对象的原型,但将使用Object对象的构造函数构造它?这是否意味着它是分两部分创建的,创建对象然后设置其属性? -
我们不知道它实际上使用的是什么构造函数。我们只知道它从您用来调用
Object.create的对象继承constructor属性。尝试做console.log(Object.create(null).constructor);
标签: javascript oop prototype prototypal-inheritance