继承,原型函数未定义

时间:2018-01-08 21:55:18

标签: javascript inheritance

我在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原型上定义的函数?

1 个答案:

答案 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');