提问人:Veda 提问时间:1/5/2023 最后编辑:ZakVeda 更新时间:1/5/2023 访问量:43
Javascript “this” 未在传递的函数中设置 [duplicate]
Javascript "this" not set in function that was passed around [duplicate]
问:
我有一个类,其中我有一个方法,用于创建一个由第三方库调用的函数。在函数内部,我想调用类成员,但是在调用函数时不再设置“this”关键字。如何让this关键字在函数中起作用?
我有一个过于简化的例子:
class myclass
{
printIt(x) {
console.log(x);
}
getFunc() {
return function(x) { this.printIt(x); };
}
}
(new myclass).getFunc()("test");
TypeError:无法读取 undefined 的属性(读取“printIt”)
我还有一个我不满意的解决方案,我希望它能以一种更优雅的方式完成:
class myclass
{
printIt(x) {
console.log(x);
}
getFunc() {
let self = this;
return function(x) { self.printIt(x); };
}
}
(new myclass).getFunc()("test");
答:
2赞
Konrad
1/5/2023
#1
class myclass {
printIt(x) {
console.log(x);
}
getFunc() {
return function(x) {
this.printIt(x);
}.bind(this);
}
}
(new myclass).getFunc()("test");
评论
getFunc() { return (x) => this.printIt(x); }