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集合访问。