在ECMAScript 3/5中, 这个this的指针问题可以通过显示的制定this到一个变量,从而把Person()构造器生成的实例this指针,引入到函数中,具体写完如下:
function Person() {
var that = this;
that.age = 0;
setInterval(function growUp() {
// The callback refers to the `that` variable of which
// the value is the expected object.
//这个回调函数引用了`that`变量,其值就代表的是当前对象,而不是一个全局的 //一个this对象
that.age++;
}, 1000);
}
这种写完有点啰嗦和繁杂,那么有没有更为简洁的方式呢?直到ES6出现了箭头函数,才彻底的解决这个问题。下面让我们看看ES6的箭头函数如何写的。
function Person(){
this.age = 0;
setInterval(() => {
// |this| 自动的指向当前Person的构造器生成的Person实例
//是不是感觉很简洁
this.age++;
}, 1000);
}
var p = new Person();
总结 : 箭头函数的作用: 改变函数内部的this指向 , 变成上下文的this