this指向的固定化,并不是因为箭头函数内部有绑定this的机制,实际原因是箭头函数根本没有自己的this,导致内部的this就是外层代码块的this。正是因为它没有this,所以也就不能用作构造函数。
箭头函数转成ES5的代码如下。
function foo() {
setTimeout(() => { console.log('id:', this.id); }, 100); } // ES5 function foo() { var _this = this; setTimeout(function () { console.log('id:', _this.id); }, 100); }
作者:紫陌兰溪
链接:https://www.jianshu.com/p/ee382fad8a9c
https://www.jianshu.com/u/c9a4863462fc