javascript - 如何在回调中访问类的 this ?

标签 javascript class ecmascript-6 this

我正在使用 ES6,但陷入了“this”。我有按钮,我希望当用户单击按钮时,按钮的文本应更新为“通过”。

HTML

<button type='button'>Click Me</button>

JS

class Test {
  constructor(){
    this.result = "Passed";
  }

  run() {
    alert('clicked');
    this.textContent = test.result;
  }

  btnClik() {
     document.querySelector('button').addEventListener('click', this.run ,false)
  }
}

let obj = new Test();
obj.btnClik();

您可能会看到它的实际效果:JSfiddle link

最佳答案

有几个错误

  • this上下文绑定(bind)到事件处理程序
  • 设置event.targettextContent而不是this

  run(event) {
    event.target.textContent = this.result; //set target of event.target
  }

  btnClik() {
     document.querySelector('button').addEventListener('click', this.run.bind( this ) ,false); //notice bind this
  }

演示

class Test {
  constructor(){
    this.result = "Passed";
  }

  run(event) {
    event.target.textContent = this.result; //set target of event.target
  }

  btnClik() {
     document.querySelector('button').addEventListener('click', this.run.bind( this ) ,false); //notice bind this
  }
}

let obj = new Test();
console.log(obj);
obj.btnClik();
<button type='button'>Click Me</button>

关于javascript - 如何在回调中访问类的 this ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48538261/

相关文章:

python - 创建具有未知数量属性的类实例

c++ - 将抽象类实现为本地类?优点和缺点

PHP 数据映射器 setter / getter

javascript - 将循环回调连接到 promise 链

javascript - ngCache与Webpack,ES6不输出模板html,解析错误

javascript - 可以用简单的javascript实现多文件上传状态栏吗?

javascript - 测试非 Angular js 网站时 Protractor 出现问题

javascript - z-index 的问题

javascript - node.js 部署在静态 IP 上?

javascript - 如何根据 prop 的值使用 React.js、ES6 和 Webpack 导入文件?