Javascript类inheritance的function

我已经build立了一个标准的基类:

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

接下来,我设置了inheritanceMyBase的另一个类

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

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

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

请申请以下内容:

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

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

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

对于一个更dynamic的方法,你甚至可以使用Object.getPrototypeOf来获取原型,但要注意它可以与dynamicinheritance一起使用。 如果你有很多方法需要调用它们的父对象,那么将MyBase.prototype别名为一个supervariables是有用的, MyBase.prototypevariables对象的所有函数都可以访问这个variables(参见这个例子的答案 ))。