ECMAScript 6对此上下文进行分类

时间:2015-12-26 15:45:25

标签: javascript ecmascript-6

我不确定在ECMAScript 6课程中访问this上下文。

在此示例中,我想调用类addItem(..)

的方法{this.addItem(data.points);}

如何正确绑定类的Conext?

class TEST {

  constructor() {}

  testMethod() {

    for (let i = 1; i <= 10; i++) {
       $.getJSON("test/" + i + ".json", function (data) {
         this.addItem(data.points);
       });
    }
  }
}

1 个答案:

答案 0 :(得分:3)

请尝试以下代码段。

&#13;
&#13;
class TEST {

  constructor() {}

  testMethod() {

    for (let i = 1; i <= 10; i++) {
      $.getJSON("test/" + i + ".json", function(data) {
        this.addItem(data.points);
      }.bind(this)); // bind the this of the function you send to $.getJSON to the this of testMethod
    }
  }
}
&#13;
&#13;
&#13;

替代方式:

使用箭头功能,因为它们继承了外部clojure的词法范围。

&#13;
&#13;
class TEST {

  constructor() {}

  testMethod() {

    for (let i = 1; i <= 10; i++) {
      $.getJSON("test/" + i + ".json", data => {
        this.addItem(data.points); // this is the this of testMethod
      });
    }
  }
}
&#13;
&#13;
&#13;