繁体   English   中英

Javascript中的参考对象调用函数

[英]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.

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