函数的Javascript类继承

Rew*_*ind 5 javascript inheritance class

我已经设置了一个基类作为标准:

MyBase = function() {
    this.m_Stuff = 0; // etc
};
MyBase.prototype.MySuperFunction = function (arg1) {
    alert("Hello" + arg1);
};
Run Code Online (Sandbox Code Playgroud)

接下来,我设置了另一个继承MyBase的类

MyChild = function () {
    MyBase.call(this);
    this.m_OtherStuff = 1; // etc
};
MyChild.prototype = new MyBase(); // innherit
Run Code Online (Sandbox Code Playgroud)

但那时(这是我不知道该怎么做)我想用更好的一个覆盖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");
};
Run Code Online (Sandbox Code Playgroud)

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

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

Ber*_*rgi 8

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

MyBase.prototype.MySuperFunction.call(this, arg1);
Run Code Online (Sandbox Code Playgroud)

对于更动态的方法,你甚至可以使用Object.getPrototypeOf来获取原型,但是要注意的是,它的工作原理与动态继承.如果您有需要调用他们的父母很多方法,它可以帮助别名MyBase.prototype作为super变量,它是儿童原型对象的所有函数访问(见这个答案的例子)).


pvn*_*ula 3

请申请以下内容:-

MyBase.prototype.MySuperFunction.call(this, arg1);
Run Code Online (Sandbox Code Playgroud)