Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript mootools扩展类_Javascript_Oop_Mootools - Fatal编程技术网

Javascript mootools扩展类

Javascript mootools扩展类,javascript,oop,mootools,Javascript,Oop,Mootools,我有以下代码: var MyClass = new Class({ Implements: [Options,Events], initialize: function(){ }, doStuff: function() { console.log('In MyClass'); } }); var MyBetterClass = new Class({ Extends: MyClass, initialize: fun

我有以下代码:

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也被调用。我该怎么做呢?这样我就不必和别人的代码混在一起了,但是当他们的代码中发生了一些事情时,我希望我的代码中也会发生一些事情。父类中没有激发事件。

您应该做的是重写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();

您应该做的是重写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();

不能在父类内调用子类方法。您可以重写父类的
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 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
    }        
}); 
然后


不能在父类内调用子类方法。您可以重写父类的
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 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
    }        
}); 
然后


您的代码中存在一些严重的语法错误,您确定这与原始语法错误相同吗?修复了语法错误。您的代码中存在一些严重的语法错误,您确定这与原始语法错误相同吗?修复了语法错误。太好了-现在,父方法正在传递一些值,firebug报告说,
this.values未定义。有没有办法保留这些值而不获取错误?如果没有看到代码,我无法很好地回答您的问题,但是如果向方法传递任何参数,它们也将传递给override方法。它们不是这个函数的属性,而是函数参数,可以命名,也可以通过arguments集合访问。这很好-现在,父方法传递了一些值,firebug报告说
this.values未定义。有没有办法保留这些值而不获取错误?如果没有看到代码,我无法很好地回答您的问题,但是如果向方法传递任何参数,它们也将传递给override方法。它们将不是这个函数的属性,而是函数参数,可以命名,也可以通过arguments集合访问。