Javascript “this” 未在传递的函数中设置 [duplicate]

Javascript "this" not set in function that was passed around [duplicate]

提问人:Veda 提问时间:1/5/2023 最后编辑:ZakVeda 更新时间:1/5/2023 访问量:43

问:

我有一个类,其中我有一个方法,用于创建一个由第三方库调用的函数。在函数内部,我想调用类成员,但是在调用函数时不再设置“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");
javascript node.js 这个

评论

3赞 epascarello 1/5/2023
使用胖箭头语法getFunc() { return (x) => this.printIt(x); }

答:

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");