[英]Reference Object calling function in Javascript
我在JS中有一个临时事件系统,附加程序如下所示:
events.attach(events.NEW_TASK,this.update);
其中this.update
是回调/处理程序/函数。 问题是,当调度程序尝试调用此处理程序时,它将丢失其原始上下文。 如何将处理程序与调用attach函数的对象的上下文绑定在一起,而又不将this
作为参数传递和使用呢?
编辑:我还应该提到,这将是一个框架,因此对于其他开发人员来说必须很简单,因此最好不需要将上下文存储在另一个变量中。
另一种选择是使用Function.prototype.bind
方法,它是新ECMAScript标准的一部分 :
events.attach(events.NEW_TASK, this.update.bind(this));
在ECMAScript 5被浏览器广泛采用之前,您可以使用自己的Function.prototype.bind
实现:
function bind(func, thisObj) {
return function() {
func.apply(thisObj, arguments);
};
}
events.attach(events.NEW_TASK, bind(this.update, this));
您可以将“ this”的引用存储在本地变量中,然后尝试使用它来调用函数
var that = this;
events.attach( events.NEW_TASK, function( ) { that.update(); } );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.