我在一个项目中遇到了这种模式。
$('some_form').observe('keypress', (function(event) {
if (event.keyCode == Event.KEY_RETURN) {
this.some_function()
event.stop();
}
}).bind(this));
我想知道为什么处理程序上有.bind(this)
。如果有帮助,这就是Class.create()的初始化函数。
我也想要将其转换为jQuery。
答案 0 :(得分:2)
如果没有绑定,范围(this
)将是some_form
元素。由于some_function
不是表单元素的成员,因此您无法调用它。
使用绑定,范围是包含范围,可以访问some_function
。
这是解决范围问题的另一种模式,它甚至可以与超级古老的浏览器兼容。
var _this = this;
$('some_form').observe('keypress', (function(event) {
_this.some_function();
}));