请考虑以下代码。
class Foo {
num = 0;
bar = function(arg) {
console.log(this.num + arg);
}
}
const foo = new Foo();
const bar = foo.bar;
foo.bar(1);
bar(2);
bar.call(foo, 3);
foo.bar(1);
日志1
。
bar(2);
抛出Uncaught TypeError: Cannot read property 'num' of undefined
。
bar.call(foo, 3);
日志3
。
是否有一种方法可以将函数foo.bar
存储在变量中,而无需指定this
对象就可以调用它?
我知道以下方法会起作用。
const foobar = function(arg) {
foo.bar(arg);
}
是否有避免创建中介功能的方法?我想将方法作为参数传递给另一个函数,而必须创建许多中间函数确实会降低代码的可读性。
答案 0 :(得分:1)
是的,有!您可以使用.bind()
。这是一个示例:
class Foo {
num = 0;
bar = function(arg) {
console.log(this.num + arg);
}
}
const foo = new Foo();
const bar = foo.bar.bind(foo);
bar(2);
答案 1 :(得分:1)
使用箭头功能定义字段;将使this
引用实例:
bar = (arg) => {
console.log(this.num + arg);
}