刚开始用这个函数的时候一直没反应出来这个this到底应该指向哪里:
setTimeout(function(){
console.log(this);
},1000);
后面才发现这无非就是一个函数调用,只不过里面有一个函数参数而已,这一点以前一直没反应过来:
setTimeout(function(){console.log(this)}},1000);
终于我悟了,这个this取决于我的setTimeout()函数内部如何处理这个函数参数,比如:
function mysettimeout(fn,delay){
setTimeout(()=>{
fn.apply({name:"gzw"});
},delay);
}
mysettimeout(function(){console.log(this);},3000);
因此对于这样一类函数,要么你看过他的源码是如何处理传进去的函数参数的,不然就凭借经验总结。