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 回答