1,箭头函数没有自己的this,指向外层普通函数作用域
funtion Timer(){
this.s1 = 0;
this.s2 = 0;
setInterval( ()=>this.s1++,1000 );
setInterval( function(){
this.s2++
},1000 );
}
var t = new Timer();
setTimeout( ()=> console.log(’s1’,t.s1),3100 ); // 3
setTimeout( ()=> console.log(’s2’,t.s2),3100 ); // 0
s1 打印 3 是因为箭头函数没有自己的this,指向外层作用域(即 Timer的实例 t),延迟三秒,
打印 3;
s2 打印 0 是因为 setInterval 内部是function ,涉及到this的绑定,此处是默认绑定,this
指向window;
window.s2 的默认值是 undefined;
对值为undefined 执行++操作,输出NaN;
此时打印window.s2;值为NaN;
t.s2的初始值为0;由于值没有变化,所以此处打印依然是0;
2,箭头函数没有constructor,不能通过new 调用;
var a = new fn()
VM10630:1 Uncaught TypeError