获得一个函数javascript的拥有对象

这更是一个普遍的问题。 我曾经看到过一些相关的答案,但没有一个给我明确的答案。

我想实现一个自动绑定function。

例:

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); 

我不能够控制调用callback的someObject方法,因为它是一个第三方库,它调用我自己的callback,所以我不能在我的原型定义中使用这个。

我可以通过使用处理程序中发送的句柄函数的一个额外的参数并绑定到它来轻松实现此目的。

或者把handler.handleFunction包装到一个应用程序块中,但是我认为如果我可以按照我在代码块中提到的方式调用它,那看起来好多了。

是否有可能find对象拥有handlerFunction的引用?

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

不幸的是,你想调用它的方式是行不通的。 这是为什么:

当你调用handle(handler.handlerFunction) ,你传递的参数是对函数的引用。 有关处理程序的任何信息都会丢失。 你可以这样做:

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

或这个:

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

有一些很好的理由,在JavaScript中根本就没有这样的东西。

相反,正如您已经提到的那样,传入一个上下文variables并将其callback应用于它,以便它在所有者上下文中运行。 这是在许多框架等常用的…