我在Javascript中有两个非常简单的原型;然而,当试图确保一个原型继承自另一个时,我看到的行为我不明白。我正在关注Mozilla开发者网络article on inheritance:
const Model = function (data) {
this.doSomething(data);
};
Model.prototype.doSomething = function (data) {
console.log("something");
};
// Second "inheriting" model
const Word = function (data) {
Model.call(this, data);
};
// Example use:
let word = new Word({ literal: "duck" });
当我的代码执行Model
原型的构造函数时,我得到一个我在此上下文中无法理解的错误:
this.doSomething不是一个功能。
由于这是一个相对简单的继承用例,它让我相信我完全缺少关于原型链的东西。
是否无法从继承的原型构造函数中调用在iherited原型上定义的函数?
答案 0 :(得分:3)
你错过了原型链
Word.prototype = Object.create(Model.prototype);
之前打电话
var w = new Word('foo');
const Model = function (data) {
this.doSomething(data);
};
Model.prototype.doSomething = function (data) {
console.log("something");
};
// Second "inheriting" model
const Word = function (data) {
Model.call(this, data);
};
Word.prototype = Object.create(Model.prototype);
var w = new Word('foo');