mootools extend class

mootools extend class

本文关键字:class extend mootools      更新时间:2023-09-26

我有这个代码:

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也被调用。我将如何做到这一点?这样我就不必弄乱别人的代码,但是当他们的代码中发生某些事情时,我希望我的代码中发生其他事情。父类中没有触发任何事件。

不能在父类中调用子类方法。您可以重写父类的 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"

你应该做的是覆盖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();