0

私はこのコードを持っています:

var MyClass = new Class({
    Implements: [Options,Events],
    initialize: function(){

    },
    doStuff: function() {
        console.log('In MyClass');
    }
});


var MyBetterClass = new Class({
    Extends: MyClass,
    initialize: function() {

    },
    doExtraStuff: function() {
        console.log('In MyBetterClass');
    }        
});    

var a = new MyBetterClass();

がどこかで呼び出されたときdoStuff、doExtraStuffも呼び出されるようにします。どうすればこれを行うことができますか?そのため、他の誰かのコードをいじくり回す必要はありませんが、彼らのコードで何かが起こったとき、私は自分のコードで何か他のことを起こしてほしいと思っています。親クラスで発生するイベントはありません。

4

2 に答える 2

3

親クラス内でサブクラスメソッドを呼び出すことはできません。親クラスのメソッドをオーバーライドし、サブクラスのプロパティをdoStuff介して親のメソッドを呼び出してから、独自のコードを実装できます。parent

スーパークラス

var MyClass = new Class({
    Implements: [Options,Events],
    initialize: function(){

    },
    doStuff: function() {
        console.log('In MyClass');
    }
});

サブクラス

var MyBetterClass = new Class({
    Extends: MyClass,
    initialize: function() {

    },
    doStuff: function() {
        this.parent();
        console.log('In MyBetterClass');
        // your own implementation of this method
    }        
}); 

それから

var a = new MyBetterClass();
a.doStuff(); // prints on console "In MyClass" and "In MyBetterClass"
于 2012-05-25T15:11:54.383 に答える
2

MyBetterClassのdoStuffメソッドをオーバーライドしてから、スーパークラスでオーバーライドされたメソッドを呼び出す必要があります。

var MyClass = new Class({
    Implements: [Options,Events],
    initialize: function(){

    },
    doStuff: function() {
        console.log('In MyClass');
    }
});


var MyBetterClass = new Class({
    Extends: MyClass,
    initialize: function() {

    },
    doStuff: function() {
        this.parent();
        console.log('In MyBetterClass');
    }        
});    

var a = new MyBetterClass();
于 2012-05-25T15:11:13.883 に答える