Javascript(四十四)强制改变this指向的函数

每一个函数都有一个内置的变量this,this指向当前函数的主人,函数的主人要根据上下文关系进行判断。
【注】一般情况下this指向当前函数的主人。

常见的this(不包括特殊情况):

1.全局函数

注:一般情况下,在全局模式下声明的变量和函数,this指向都是window(除了严格模式是undefined)
在这里插入图片描述

2.对象属性

this指向的是对象
在这里插入图片描述

3.事件处理函数

this指向 绑定的事件对象
在这里插入图片描述

强制改变this指向:

一般情况下,在全局模式下声明的函数的this指向都是window
在这里插入图片描述

call

格式:函数名.call();

第一个参数:传入该函数this指向的对象,传入什么强制指向什么。

第二个参数开始,将原函数的参数顺延一位。

返回值:1.如果函数有返回值,那么返回值就是函数本身的返回值

​ 2.如果函数没有返回值,那么返回值时undefined
在这里插入图片描述

apply

格式:函数名.apply();

第一个参数:传入该函数this指向的对象,传入什么强制指向什么。

第二参数:数组,数组里按顺序放入原有的所有参数

返回值:1.如果函数有返回值,那么返回值就是函数本身的返回值

​ 2.如果函数没有返回值,那么返回值时undefined
在这里插入图片描述
call和apply适用于只有调用函数时,才会去改变this指向问题。当调用执行完毕以后,this指向还是之前的。

bind:预设this指向

使用方法1:

格式:函数名.bind()

第一个参数:传入该函数this指向的对象,传入什么强制指向什么。

第二个参数开始,将原函数的参数顺延一位。

返回值:更改this指向以后的函数体
在这里插入图片描述
使用方法2:

格式:函数名.bind()

一个参数:传入该函数this指向的对象,传入什么强制指向什么。

返回值:更改this指向的函数体
在这里插入图片描述
事件处理函数特殊性:
在这里插入图片描述
不能直接在show后面直接写入.call/.apply改变this指向, 因为这是立即执行函数,不是事件触发执行
在这里插入图片描述
但是可以通过函数嵌套的方法,当触发事件处理函数时,内部的改变首位处理函数才执行
在这里插入图片描述
如果直接只用bind的话,就不担心了, 因为bind本来就是预设this指向,返回的也只是更改this以后的函数
在这里插入图片描述
而call和apply执行以后的返回值依据函数是否有返回值,如果函数有返回值,那么call和apply的返回值就是函数返回值。如果函数没有返回值,那么call和apply的返回值就是undefined。
在这里插入图片描述
apply使用的小技巧

注:当不需要改变this指向,但是需要改变参数时,可以第一个参数写成null,或者’'等等。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值