我已将基类设置为标准:
MyBase = function() {
this.m_Stuff = 0; // etc
};
MyBase.prototype.MySuperFunction = function (arg1) {
alert("Hello" + arg1);
};
接下来,我设置了另一个继承MyBase
的类MyChild = function () {
MyBase.call(this);
this.m_OtherStuff = 1; // etc
};
MyChild.prototype = new MyBase(); // innherit
然后(这是我不知道该怎么做)我想用更好的一个覆盖MyBase的MySuperFunction,但是在这个过程中调用基类函数:
MyChild.prototype.MySuperFunction = function (arg1, arg2) {
MyBase.MySuperFunction(arg1); // THIS LINE IS THE LINE I DONT KNOW HOW TO DO
alert("You is a " + arg2 + "'th level idiot");
};
它想要覆盖的子类是基类函数,但是想要在新的改进定义中调用基类函数。
这是可能的,如果是的话,怎么办呢?
答案 0 :(得分:8)
它类似于继承的构造函数中的调用。您仍然可以在MyBase.prototype.MySuperFunction
(您指定的位置)上访问“超级”方法,因此请使用:
MyBase.prototype.MySuperFunction.call(this, arg1);
对于更动态的方法,您甚至可以使用Object.getPrototypeOf
来获取原型,但请注意它与动态继承一起使用。如果您有许多需要调用其父级的方法,将MyBase.prototype
别名作为super
变量可能会有所帮助,该变量可供Child原型对象上的所有函数访问(请参阅this answer例如))。
答案 1 :(得分:2)
请申请以下内容: -
MyBase.prototype.MySuperFunction.call(this, arg1);