5

我已经建立了一个基类作为标准:

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");
};

它想要覆盖的子类是基类函数,但想要在新改进的定义中调用基类函数。

这可能吗?如果可以,怎么做?

4

2 回答 2

8

它类似于您继承的构造函数中的调用。您仍然可以访问“超级”方法MyBase.prototype.MySuperFunction(您分配它的位置),因此请使用:

MyBase.prototype.MySuperFunction.call(this, arg1);

对于更动态的方法,您甚至可以使用它Object.getPrototypeOf来获取原型,但要注意它与动态继承一起使用。而且,如果您有许多方法需要调用其父方法,则将别名MyBase.prototype作为一个super变量会很有帮助,该变量可供 Child 原型对象上的所有函数访问(请参阅此答案以获取示例))。

于 2013-06-06T13:18:15.710 回答
2

请申请以下内容:-

MyBase.prototype.MySuperFunction.call(this, arg1);
于 2013-06-06T13:17:30.443 回答