箭头函数中的this获取

43 阅读1分钟
  1. 第一个代码块展示了箭头函数this绑定的特性(无法通过call改变,始终绑定定义时的this)
  2. 第二个代码块演示了经典this问题(setTimeout回调中的this指向问题)
// 文件1: 箭头函数的this绑定
var name = "why"

var foo = () => {
    console.log(this)
}

foo()
var obj = {foo: foo}
obj.foo()
foo.call("abc")
}

// 文件2: 应用场景
var obj = {
    data: [],
    getData: function() [
    // 发送网络请求,将结果放到上面data属性中
     // 发送网络请求,将结果放到上面data属性中
    // 在箭头函数之前的解决方案
    // var _this = this
    // setTimeout(function() {
    // ...var result = ["abc", "cba", "nba"]
    // ..._this.data = result
    // }, 2000);
    // 箭头函数之后
    setTimeout(function() {
    var result = ["abc", "cba", "nba"]
    this.data = result
    },
    2000);
    }
}

obj.getData()