关于This和箭头函数
关于This,和JS的闭包这些,应该都是老生常谈了,本不应该说,因为一直在用TS&ES6+,对es5多了些淡忘,在小程序开发时,一度忘了this在哪
简介请戳深入理解JavaScript原型和闭包 -- This用法
this 指向的固定化,并不是因为箭头函数内部有绑定 this 的机制,实际原因是箭头函数根本没有自己的 this,导致内部的 this 就是外层代码块的 this。正是因为它没有 this,所以也就不能用作构造函数。
所以,箭头函数转成 ES5 的代码如下。
// ES6
function foo() {
setTimeout(() => {
console.log('id:', this.id);
}, 100);
}
// ES5
function foo() {
var _this = this;
setTimeout(function () {
console.log('id:', _this.id);
}, 100);
}
上面代码中,转换后的 ES5 版本清楚地说明了,箭头函数里面根本没有自己的 this,而是引用外层的 this。
可以再次翻阅阮一峰老师的资料 ECMAScript 6 入门 - 箭头函数
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭