从内部回调ES2015访问属性

时间:2016-07-28 11:11:10

标签: javascript ecmascript-6

我在ES2015中使用的语言与下面的代码段完全相同:

class ProfileManager{
  constructor($http){
    this._http = $http;
    this.profile = {};
    }

  getUser(profile){
     this._http(`/api/users/${user.id}`).then(function(response){
        this.profile = response.data;    
        /*
         * Results in exception because "this uses the function's
         * "this" instead of the class' "this"
         */
     });
 }

我知道我可以通过在类之外创建一个profile变量并在类中使用它来解决这个问题,但我想知道是否有更简洁的方法在嵌套函数或回调中使用类属性。

1 个答案:

答案 0 :(得分:4)

ES6 arrow functions不会覆盖this

class ProfileManager {
  constructor($http) {
    this._http = $http;
    this.profile = {};
  }

  getUser(profile) {
     this._http(`/api/users/${user.id}`).then((response) => {
        this.profile = response.data; 
     });
 }