函数的Javascript类继承

时间:2013-06-06 13:14:52

标签: javascript class inheritance

我已将基类设置为标准:

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

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

这是可能的,如果是的话,怎么办呢?

2 个答案:

答案 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);