【发布时间】:2021-10-26 06:05:30
【问题描述】:
let log = console.log;
function Animal(name)
{
this.name = name;
}
Animal.prototype.walk = function(){
log(`${this.name} walks`);
}
function Cat(name)
{
Animal.call(this,name);
this.lives = 9;
}
Cat.prototype = Object.create(Animal.prototype);
Cat.prototype.meow = function(){
log("Meow!");
}
let bambi = new Cat("Bambi");
log(bambi.constructor) // function Animal(name){ this.name = name; }
我使用 Cat 构造函数创建了“bambi”对象,但是在检查 bambi 的构造函数时它返回 Animal 构造函数。我已经使用 Object.create() 将 Cat 的原型分配给 Animal 原型。为什么bambi对象的构造函数是Animal而不是Cat?
【问题讨论】:
-
ES6 之前的构造函数真的很没用。 (例如,除了阅读构造函数是什么之外,你真的无能为力。)你的 Q 底线是你用 Animal.prototype 替换了 Cat.prototype,这导致你的 Cat“成为”(继承)一切在 Animal... 包括构造函数。
标签: javascript oop