作为一名Flash开发人员,我尝试与AS3提供的mootools具有相同的灵活性。
我尝试做一件简单的事情,创建一个受保护的事件处理函数。 我讨厌编写内联函数,所以我写了这样的东西:
//CLASS DEFINITION AS USUAL
initializeEvent:function (){
if (this.options.slider) this.options.slider.addEvents ({
mousedown:function (e){
this.sliderDownHandler();
//throw an error because sliderDownHandler is set to protected
}
});
},
update:function (){
this.fireEvent('update');
}.protect(),
sliderDownHandler:function (e){
this.update();
console.log ('yeah it down')
}.protect();
如果没有.protect(),处理程序就会按预期工作。
使用.protected()?
可以达到这个目标非常感谢!
答案 0 :(得分:1)
mousedown:function (e){
this.sliderDownHandler();
//throw an error because sliderDownHandler is set to protected
}
没有。它会抛出一个错误,因为this
将绑定到this.options.slider
,这会触发事件 - 我猜这是一个没有sliderDownHandler
方法的元素。你在受保护的方法上获得的例外是非常独特的,并且没有错误 - 通过在instance.sliderDownHandler()
重写为以下之一:
var self = this;
...
mousedown:function (e){
self.sliderDownHandler();
}
// or, bind the event to the class instance method...
mousedown: this.sliderDownloadHandler.bind(this)