繁体   English   中英

为什么此原型js观察到回调函数具有绑定?

[英]Why does this prototypjs observe have a bind on the callback function?

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

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

我想知道为什么在处理程序上有.bind(this) 如果有帮助,这些全部在Class.create()的initialize函数中。 我也想将其转换为jQuery。

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

通过绑定,范围是包含范围,可以访问some_function

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM