1.不可预知的thispointing在前端面试中,thispointing和面向对象是必考题,也是日常开发中绕不开的话题。很多前端老手也会在这里讨论这个点到坑。本课围绕this的指向问题来分析this在不同环境下的不同点。1.吃透函数的this指向不同调用环境下的事件调用环境中谁触发了事件,函数中的this就指向了谁。全局环境浏览器非严格模式环境窗口,严格模式环境undefind节点环境module.exportsconsole.log('globalthis',this);//窗口函数内部【this最终指向调用它的对象】普通函数直接调用和窗口调用letbox=document.querySelector('.box');让lili=document.querySelector('.lili');box.onclick=移动;lili.onclick=移动;函数移动(){这个。style.left='100px';console.log('eventthis',this)//this指向被点击的元素(box或lili)}直接调用对象中的函数调用窗口varobj={a:10,b:function(){console.log('tag',this)}}window.obj.b()//objectobjobj.b()//objectobj[函数被多层对象包含,如果包含函数通过上次调用外层对象时,this指向其上层对象]多层对象中函数的this指向varobj={a:10,b:{fn:function(){console.log(这个);}}}window.obj.b.fn();//对象bobj.b.fn();//对象b。对象中的函数赋值给另一个变量a:10,b:{fn:function(){控制台日志(这个);}}}varabc=obj.b.fn;美国广播公司();//窗口abc.call(obj);//objectobj[thisin构造函数指向实例对象]·构造函数中的this指向·new操作符的作用object,那么this指向保持原来的规则,这里,null是特殊的]2.理解箭头函数this指向的特殊性箭头函数本身没有this和arguments。当在箭头函数中引用this时,它实际上调用了在上层作用域中定义的this。这里强调是上层作用域,因为对象是不能形成一个独立作用域的。3.掌握如何把this改成指向call/apply/bind
