为什么这个prototypjs观察到了回调函数的绑定?

时间:2015-03-31 17:46:57

标签: javascript jquery prototype

我在一个项目中遇到了这种模式。

$('some_form').observe('keypress', (function(event) {
    if (event.keyCode == Event.KEY_RETURN) {
        this.some_function()
        event.stop();
    }
}).bind(this));

我想知道为什么处理程序上有.bind(this)。如果有帮助,这就是Class.create()的初始化函数。 我也想要将其转换为jQuery。

1 个答案:

答案 0 :(得分:2)

如果没有绑定,范围(this)将是some_form元素。由于some_function不是表单元素的成员,因此您无法调用它。

使用绑定,范围是包含范围,可以访问some_function

这是解决范围问题的另一种模式,它甚至可以与超级古老的浏览器兼容。

var _this = this;
$('some_form').observe('keypress', (function(event) {
    _this.some_function();
}));