我有一个扩展的“类”,使用原型扩展基类“类”。我遇到的问题是如何从继承类原型方法调用基类原型(基本方法)上定义的方法。
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();
当然,因为两个对象的原型是相同的,并且只添加了方法,并且因为原型方法是公开的,所以这应该没问题,除非这不是原型链的工作方式吗?
答案 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