Mootools类保护处理程序?

时间:2012-08-21 10:05:40

标签: javascript class mootools protected

作为一名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()?

可以达到这个目标

非常感谢!

1 个答案:

答案 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)