js中call(),apply()和bind()的区别

7 篇文章 0 订阅

call,apply和bind都是js中强制改变this指向的方法。具体用法以及差异如下:

1. call()
用法:

call(this指向对象,参数1,参数2……)

例:在直接调用方法时,this指向window
在这里插入图片描述
使用call改变this指向后:this指向对象obj1
在这里插入图片描述
call有参数传递时:参数依次用逗号排在对象后
在这里插入图片描述
2. apply()
用法:

apply(this 指向对象,[参数1,参数2……])

例同上:在直接调用方法时,this指向window
在这里插入图片描述
使用apply改变this指向后:this指向对象obj1
在这里插入图片描述
apply有参数传递时,参数放在对象后的数组内
在这里插入图片描述
3. bind()
用法:

bind(this指向对象,参数1,参数2……)

bind和那两种的区别是,call和apply在调用时会立即执行函数fun,而bind只会绑定this指向的对象不会立即执行。

在这里插入图片描述
只有执行bind绑定后的函数,才会看到this指向的改变,这里只用立即执行函数演示
在这里插入图片描述
bind传递参数同call
利用bind只绑定不执行的特点还可以将this绑定给第三个声明,然后这个声明就是指向的绑定对象,然后去执行这个声明
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值