这更是一个普遍的问题。我之前已经看到了一些与之相关的答案,但没有一个给我明确的答案。

我想实现自动绑定功能。

例:

var someObject;
var handle = function(arg1, callback){
   someObject(arg1, callback.bind(???owner of callback???))
}

var handler = new Handler();

//Calling it
handle("my arg", handler.handlerFunction);


我无法控制someObject调用回调的方式,因为它是第三方库,并且正在使用对自身的引用来调用回调,因此无法在原型定义中使用此方法。

通过在处理程序中发送并绑定到处理程序函数,可以使用额外的参数轻松实现此目的。

或将handler.handleFunction包装到一个apply块中,但我认为如果我可以按代码块中所引用的方式对其进行调用,它将看起来更好。

是否可以找到对拥有handlerFunction的对象的引用?

我正在使用Nodejs,如果有任何相关性。

最佳答案

不幸的是,您要调用的方式无效。原因如下:

调用handle(handler.handlerFunction)时,传递的参数是对函数的引用。有关处理程序的所有信息都将在那里丢失。您可以改为:

handle("my arg", handlerFunction.bind(handler));


或这个:

handler.handlerFunction = handler.handlerFunction.bind(handler);
handle("my arg", handler.handlerFunction);

07-24 16:36