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
别名为一个super
variables是有用的, MyBase.prototype
variables对象的所有函数都可以访问这个variables(参见这个例子的答案 ))。