我有一个这样的命名函数
function handler(arg) {
this.arg = arg;
}
有没有办法将上下文绑定到此函数?
我正在寻找像这样的东西
function handler(arg) {
this.arg = arg;
}.bind(this);
允许在任何上下文中调用此函数,但它将始终使用绑定上下文。
例如,我有另一个功能(在供应商代码中,我无法编辑)
addEventListener(callback) {
callback(currentArg);
}
我将传递处理程序,它将使用绑定上下文执行
答案 0 :(得分:2)
来自MDN
bind()方法创建一个新函数,当被调用时,它具有它 此关键字设置为提供的值,具有给定的序列 调用新函数时提供的任何参数。
根据此定义,您可以执行以下操作
function handler(arg) {
this.arg = arg;
}
var newFunc = handler.bind(newContext,arg);
答案 1 :(得分:1)
如果您只想避免上下文更改,可以使用箭头功能:
handler = (arg) => {
this.arg = arg;
};
答案 2 :(得分:1)
我不确定您将在何处以及如何使用它,但您可以使用函数表达式而不是函数减速:
var handler = function handler(arg) {
this.arg = arg;
}.bind(this)
或者只使用arrow function,this
将使用词汇上下文:
var handler = (arg) => {...}