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 に答える