摘要:前言先做一个小测试,如果全部答对了,恭喜你不用往下看了。它就相当于一个没有主人调用它,无主函数。不管你用还是最终调用的都是函数,但它们会强制的指向了,强制的指向了它们的第一个参数对象。
前言
第一题 第二题 第三题 第四题 答案先做一个小测试,如果全部答对了,恭喜你不用往下看了。
第一题:zhangsan wangwu zhangsan 第二题:zhangsan zhangsan 第三题:我叫zhangsan 我叫zhangsan 第四题:zhangsan zhangsan zhangsan lisi wangwu (往下看,下面有详细解析哦)this
指向调用函数的对象
无对象调用函数/匿名函数自调用(this指向window)
通过new产生的对象
apply/call调用
一、指向调用函数的对象全局函数(demo)属于window对象的方法,window调用demo所以this就指向了window
obj调用say方法,this就指向了obj
fun()是全局函数,而声明的fun接收的是obj里面单纯的一个函数,并没有调用(obj.say()才是调用了函数),此时的fun就是一个函数(function(){alert(this.str);}),那么当fun()调用函数的时候,this指向的就是window
是谁调用的函数,那么this就指向谁
二、无对象调用函数/匿名函数自调用->this指向window因为匿名函数没有名字,所以就挂给window了
test(),谁调用test那么就指向谁。当然实验过,它不是window调用的,也不是demo调用的,没有人管它,那么它就指向window。它就相当于一个没有主人调用它,无主函数。
三、通过new产生的对象当我们的函数Person里面运用了this去写属性和方法这种格式,那么就要通过new来让属性和方法变得有价值,通过new去运用函数里面的属性和方法
四、apply/call调用首先我们来了解下apply()/call()是个什么东西呢?
apply()/call():最终是调用function,只不过内部的this指向了thisObj function.call([thisObj[,arg1[, arg2[, [,.argN]]]]]) function.apply([thisObj[,argArray]]) 注意: 1. 调用function函数,但是函数内的this指向thisObj(更改对象内部指针) 2. 如果thisObj没有传参,则默认为全局对象 3. call()/apply()联系与区别 联系:功能一样,第一个参数都是thisObj 区别:传递的参数如果比较多 call()的实参就是一一列出 apply()的实参是全部放置在第二个数组参数中
一个理解apply()/call()的实例:
this的第四个用法实例
如果直接调用demo里面写的不管是obj1还是obj2,那么demo还是属于window调用的。
不管你用call还是apply最终调用的都是demo函数,但它们会强制的this指向了obj1/obj2,强制的指向了它们的第一个参数对象。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/87180.html
总结call,apply,bind方法的理解使用和区别。 call,apply,bind这三个方法在JavaScript中是用来改变函数调用的this指向。那么改变函数this指向有什么用呢?我们先来看一段代码 var a= { name:harden, fn:function () { console.log(this.name); } } var b =...
摘要:情况如果一个函数中有,这个函数有被上一级的对象所调用,那么指向的就是上一级的对象。 首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的指向的是最终调用它的对象。 函数调用模式 例子1 function a(){ var user = username; console.log(this.user)...
摘要:否则报错在严格模式下,对象的函数中的指向调用函数的对象实例同样道理,可以推断出,在严格模式下,构造函数中的指向构造函数创建的对象实例。 要点 this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象。 this指向的三种情况 情况1:如果一个函数中有this,但是它没有被上一级的对象所调用,那么this指向的...
阅读 675·2021-10-14 09:42
阅读 1946·2021-09-22 15:04
阅读 1528·2019-08-30 12:44
阅读 2117·2019-08-29 13:29
阅读 2703·2019-08-29 12:51
阅读 524·2019-08-26 18:18
阅读 662·2019-08-26 13:43
阅读 2770·2019-08-26 13:38