在javscript中,this 是在函数运行时自动生成的一个内部指针,它指向函数的调用者。
箭头函数有些不同,它的this是继承而来, 默认指向在定义它时所处的对象(宿主对象),而不是执行时的对象。
var name = "window"; var test = { name:"demo", // 传统函数 getName1: function(){ console.log(this.name); // demo var that = this; setTimeout(function(){ console.log(this.name); // window console.log(that.name); // demo },500) }, // 箭头函数-作为异步回调 getName2:function(){ setTimeout(()=>{ console.log(this.name) // demo },500) }, // 箭头函数-作为直接执行的方法 getName3:()=>{ console.log(this.name) // window } };
如上getName3(),将箭头函数作为直接执行的方法来写时要特别小心,它的this会直接指向window。