2

我正在使用原型继承在 javascript 中构建一个面向对象的库。与 Java 和 .NET 类似,我的所有对象/原型都将继承“对象”对象/原型。我想知道是否可以从派生函数中调用超级对象/原型函数?

考虑以下代码示例:

function Object() {
    this.DoAction = function() {
    };
};

function CustomObject() {
    this.DoAction = function() {
        super.DoAction();    //How do I do this in JavaScript?
    };
};
4

1 回答 1

7

JavaScript 没有super.

一种解决方法可能是在覆盖之前将方法保存在原型上,例如:

function CustomObject() {
    this._super_DoAction = this.DoAction;
    this.DoAction = function() {
        this._super_DoAction(); 
    };
};

如果您能够使用 ES5 功能,您可以使用Object.getPrototypeOf从原型中获取方法,然后apply使用当前对象执行它this

function CustomObject(){
    this.DoAction=function() {
        Object.getPrototypeOf(this).DoAction.apply(this, []);
    };
}
于 2012-08-25T07:52:40.723 回答