当前位置: 首页 > Web前端 > JavaScript

热门面试题:谈谈对这个的理解?

时间:2023-03-27 16:13:51 JavaScript

前言欢迎来到“前端进阶圈”公众号,一起探索和学习前端技术……前端小菜鸟,分享的文章纯属个人观点,如有不妥,敬请谅解可以讨论欢迎评论和同学一起学习~说说你对这个对象的理解?在执行上下文中定义的属性,指向上次调用此属性或方法的对象。通常有四种情况来判断。四种情况如下1.函数调用方式:当函数不是对象的属性时,直接作为函数调用时,严格模式下指向undefined,非严格模式下this指向全局对象严格模式。//严格模式"usestrict";变种名称=“窗口”;vardoSth=function(){console.log(typeofthis==="undefined");console.log(this.name);};doSth();//true,//错误,因为this未定义//非严格模式letname2="window2";letdoSth2=function(){console.log(this===window);console.log(this.name2);};doSth2();//真,未定义2。方法调用方式:如果函数作为对象的方法调用,则this指向当前对象varname="window";vardoSth=function(){console.log(this.name);};varstudent={name:"lc",doSth:doSth,other:{name:"other",doSth:doSth,},};student.doSth();//'lc'student.other.doSth();//'other'//使用调用类比是:student.doSth.call(student);//使用调用类比是:student.other.doSth.call(student.other);3.构造函数调用方式:如果一个函数被new调用,那么在函数执行之前会创建一个新的对象,this指向新创建的对象。varObj=function(p){this.p=p;};varo=newObj("HelloWorld!");o.p;//“你好世界!”4.apply、call、bind模式:显式改变this指向,在严格模式下,绑定的第一个参数,在非严格模式下,null和undefined指向全局对象(浏览器中的window),其余指向由newObject()包装的对象。aplly:apply(objectboundbythis,parameterarray)func.apply(thisValue,[arg1,arg2,...])functionf(x,y){console.log(x+y);}f.call(空,1,1);//2f.apply(null,[1,1]);//2call:call(thisboundobject,eachparameter)func.call(thisValue,arg1,arg2,...)vardoSth=function(name){console.log(this);console.log(name);};doSth.call(2,"lc");//Number{2},'lc'vardoSth2=function(name){"usestrict";控制台日志(这个);console.log(name);};doSth2.call(2,"lc");//2,'lc'bind:bind(thisBindobject)func.bind(thisValue)varcounter={count:0,inc:function(){this.count++;},};varobj={count:100,};varfunc=counter.inc.绑定(obj);func();obj.count;//101//eg2:varadd=function(x,y){returnx*this.m+y*this.n;};varobj={m:2,n:2,};varnewAdd=add.bind(obj,5);newAdd(5);//20箭头函数规则不会使用上面的原则,而是根据当前作用域来判断this,也就是说箭头函数会继承外层函数,调用的this绑定,没有外层函数,指向全局(浏览器中的窗口)。thispriorityconstructormode>apply,call,bind>methodcallmode>functioncallmode文章特殊字符描述:问号Q:(问题)答案标记R:(结果)注解标准:A:(注意事项)详细说明注解:D:(detailinfo)summaryannotation:S:(summary)analysisannotation:Ana:(analysis)promptannotation:T:(tips)pastreview:热门面试题:browserandNodemacrotasksandmicrotasksTask?这就是你理解的CSS选择器权重吗?面试热点:JS中call、apply、bind的概念、用法、区别和实现是什么?热门面试题:常见的位运算有哪些?Vue数据监控Object.definedProperty()方法的实现面试热点问题:VirtualDOM相关问题?面试热点问题:Array中的无损方法有哪些?面试热点:协商缓存和强缓存的理解和区别?最后:欢迎大家关注“前端进阶圈”公众号,一起探索学习前端技术...公众号回复加群或扫码,即可加入前端交流学习群,长期交流学习.....公众号回复加好友,可以加为好友