调用继承的方法javascript原型

时间:2015-04-27 18:49:34

标签: javascript inheritance

我有一个扩展的“类”,使用原型扩展基类“类”。我遇到的问题是如何从继承类原型方法调用基类原型(基本方法)上定义的方法。

function Obj() {
    this.name;
}

Obj.prototype.baseMethod = function(usefulstuff) {
    alert(usefulstuff);
}

function extendedObj() {
    Obj.call(this);
}

extendedObj.prototype = new Obj();

extendedObj.prototype.constructor = extendedObj;

extendedObj.prototype.anotherMethod = function() {
    this.baseMethod(stuff);//gives this.baseMethod is not a function and direct call gives baseMethod is not defined
}

var a = new extendedObj();

a.anotherMethod();

当然,因为两个对象的原型是相同的,并且只添加了方法,并且因为原型方法是公开的,所以这应该没问题,除非这不是原型链的工作方式吗?

1 个答案:

答案 0 :(得分:1)

你可以加上一个引用超类的_super属性。有关详细信息,请参见此处http://ejohn.org/blog/simple-javascript-inheritance/

另一种方法是使用Superclass.prototype.desiredMethod.call(this, args...)直接从超类的原型中调用该方法。有关详细信息,请参见此处http://blog.salsify.com/engineering/super-methods-in-javascript