我需要有一个绑定事件监听器函数来引用它自己,但是我没有看到以严格模式访问自身的方法(arguments.callee
不可用)。
请参阅以下代码段以获取示例:
function callback(boundParam, event) {
// This does not work here as not 'callback' was added
// to the event bus but 'boundCallback'
eventBus.removeListener(callback);
}
function foo () {
const boundCallback = callback.bind({}, 7);
eventButs.addListener(boundCallback);
}
我有什么选择?
这是 NOT 是JavaScript: remove event listener的副本,因为我需要引用绑定函数!
答案 0 :(得分:1)
也许内联处理程序,这样你就不需要绑定:
function foo () {
function callback (){
//...
eventBus.removeListener(callback);
}
eventBus.addListener(callback);
}
答案 1 :(得分:1)
您可以创建一个函数,在调用时返回对绑定函数的引用。让我们调用该函数getBoundCallback
。然后,将其附加到bind()
调用的参数列表,以便在callback
中接收函数。然后,您应该能够调用getBoundCallback
并获取实际绑定函数:
function callback(boundParam, getBoundCallback, event) {
eventBus.removeListener(getBoundCallback());
}
function foo() {
let boundCallback;
const getBoundCallback = () => boundCallback;
boundCallback = callback.bind({}, 7, getBoundCallback);
eventButs.addListener(boundCallback);
}
请注意boundCallback
的声明和初始化是如何分开的,因为初始化getBoundCallback
的语句需要引用boundCallback
。