我正在使用原型(prototype)继承在 javascript 中构建一个面向对象的库。与 Java 和 .NET 类似,我的所有对象/原型(prototype)都将继承“Object”对象/原型(prototype)。我想知道是否可以从派生的调用 super 对象/原型(prototype)函数?
考虑以下代码示例:
function Object() {
this.DoAction = function() {
};
};
function CustomObject() {
this.DoAction = function() {
super.DoAction(); //How do I do this in JavaScript?
};
};
最佳答案
JavaScript 没有 super
的直接等价物。
解决方法可能是在覆盖原型(prototype)之前将方法保存在原型(prototype)上,例如:
function CustomObject() {
this._super_DoAction = this.DoAction;
this.DoAction = function() {
this._super_DoAction();
};
};
如果你会使用ES5特性,你可以使用Object.getPrototypeOf
从原型(prototype)中获取方法,然后apply
用当前对象执行作为这个
:
function CustomObject(){
this.DoAction=function() {
Object.getPrototypeOf(this).DoAction.apply(this, []);
};
}
关于javascript - JavaScript 中的原型(prototype)继承...我可以调用 "super"等价物吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11977718/