我在Javascript中有两个非常简单的原型;但是,当试图确保一个原型继承另一个原型时,我看到的是我不明白的行为。我正在跟踪的关于继承的条款
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原型上的函数吗?
发布于 2018-01-08 14:03:43
你只是错过了原型链
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');
https://stackoverflow.com/questions/48158623
复制相似问题