ser*_*0ne 2 javascript inheritance prototype
我正在使用原型继承在javascript中构建面向对象的库.与Java和.NET类似,我的所有对象/原型都将继承"Object"对象/原型.我想知道是否可以从派生的函数调用超级对象/原型函数?
请考虑以下代码示例:
function Object() {
this.DoAction = function() {
};
};
function CustomObject() {
this.DoAction = function() {
super.DoAction(); //How do I do this in JavaScript?
};
};
Run Code Online (Sandbox Code Playgroud)
JavaScript没有直接的等价物super.
解决方法可能是在覆盖原型之前将方法保存在原型上,例如:
function CustomObject() {
this._super_DoAction = this.DoAction;
this.DoAction = function() {
this._super_DoAction();
};
};
Run Code Online (Sandbox Code Playgroud)
如果您能够使用ES5功能,则可以使用Object.getPrototypeOf从原型获取方法,然后apply使用当前对象执行它this:
function CustomObject(){
this.DoAction=function() {
Object.getPrototypeOf(this).DoAction.apply(this, []);
};
}
Run Code Online (Sandbox Code Playgroud)