我在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变量并在类中使用它来解决这个问题,但我想知道是否有更简洁的方法在嵌套函数或回调中使用类属性。
答案 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;
});
}