ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

js之this

2022-06-23 22:36:49  阅读:122  来源: 互联网

标签:调用 name car ll js hmm sayHi


定义:this代表的是函数运行时所在的对象,一般来说,哪个对象调用它,它就指向谁:

 var name="hmm";         function fn(){             console.log(this.name);         }         fn();//输出结果即为hmm,此时调用它的windows对象,故其指向windows,this.name就相当于windows.name,即全局变量name,值为hmm this指向的问题: var name="韩梅梅"; var xm={     name:"小明",     sayHi:function(){         setTimeout(function(){             console.log(this.name);         },0)     } } var ll={     name:"李雷",     sayHi:sayHi } function sayHi(){     console.log(this.name); } sayHi();//结果为韩梅梅,由window对象调用的sayHi xm.sayHi();//结果为韩梅梅,定时器内的函数是由windows对象调用的 setTimeout(ll.sayHi,100);//结果为韩梅梅,调用定时器里的ll.sayHi方法的是window对象,故ll.sayHi里的this指的是window setTimeout(function(){     ll.sayHi(); },200)//结果为李雷,window调用的是定时器的function,函数体内,调用sayHi的实质上是ll对象,this指向李雷 更改this指向的三种方法  --之call方法 var ll={     name:"李雷",     car:function(){         console.log(this.name+"can drive car");     } } var hmm={     name:"韩梅梅" } ll.car.call(hmm)//结果为韩梅梅can drive car。 call将ll对象的car方法指向更改为了hmm对象,即此时call中的this指的不再是ll,而是hmm call()参数问题 当ll对象的car方法有参数时,hmm对象想借ll的car方法就必须带着car需要的参数一起去了,规定参数以逗号分隔,写在借用对象后: call(hmm,参数一,参数二,...) --之apply方法 同call作用相同,但两者的参数的写法不一样,此种方法的多个参数需要用中括号包裹起来: apply(hmm,[参数一,参数二,...]) --之bind方法 不同于前两者,bind方法调用后返回的是一个函数,想要借用别人有的,需要主动调用才可 上述代码hmm对象调用ll对象的car方法必须先把ll对象里的this指针改为hmm才可,然后再主动调用返回的bind函数: var fn=ll.car.bind(hmm); fn();//结果为韩梅梅can drive car

 

标签:调用,name,car,ll,js,hmm,sayHi
来源: https://www.cnblogs.com/zsy1006/p/16406971.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有