在严格模式下在自身内部引用绑定函数
Reference bound function inside itself in strict mode
我需要一个绑定的事件侦听器函数来引用自身,但我没有看到在严格模式下访问自身的方法(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);
}
我有哪些选择?
这 不是 JavaScript: remove event listener 的副本,因为我需要引用绑定函数!
也许内联处理程序,这样您就不需要绑定:
function foo () {
function callback (){
//...
eventBus.removeListener(callback);
}
eventBus.addListener(callback);
}
您可以创建一个函数,在调用时 returns 引用绑定函数。我们称该函数为 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
的声明和初始化是如何分开的,因为初始化 boundCallback
.
的语句需要引用 getBoundCallback
我需要一个绑定的事件侦听器函数来引用自身,但我没有看到在严格模式下访问自身的方法(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);
}
我有哪些选择?
这 不是 JavaScript: remove event listener 的副本,因为我需要引用绑定函数!
也许内联处理程序,这样您就不需要绑定:
function foo () {
function callback (){
//...
eventBus.removeListener(callback);
}
eventBus.addListener(callback);
}
您可以创建一个函数,在调用时 returns 引用绑定函数。我们称该函数为 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
的声明和初始化是如何分开的,因为初始化 boundCallback
.
getBoundCallback