这更是一个普遍的问题。我之前已经看到了一些与之相关的答案,但没有一个给我明确的答案。
我想实现自动绑定功能。
例:
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);