call() ,bind(), applay()调用

call,bind,applay都是更改this指向的

call的使用:

call在使用时直接是obj.call(this,'arg1','arg2') 不用使用“()”调用

call的传参(this, 'arg1','arg2') 直接放在后面即可

apply的使用:

apply在使用时直接是obj.apply(this,'arg1','arg2') 不用使用“()”调用

apply的传参(this, ['arg1','arg2']) 除this指向外,其余需要放在数组里传入

bind的使用:

bind在使用时直接是obj.bind(this,'arg1','arg2') 需要使用“()”调用 obj.bind(this,')() 因为bind返回的是一个新函数,需要()进行调用;

bind 的传参(this, 'arg1','arg2') 直接放在后面即可

call 、bind 、 apply 这三个函数的第一个参数都是 this 的指向对象,第二个参数差别就来了:

call: 返回参数不是新函数, 不用() 调用,传参不用数组包装

apply: 返回参数不是新函数,不用() 调用,传参需要数组包装

bind:返回参数是新函数, 需要() 调用,传参不用数组包装

参数可传对象,字符串,等等
非严格模式:

如果不传参数,或者第一个参数是null或nudefined,this都指向window

严格模式:"use strict"

如果不传参数,或者第一个参数是null或nudefined,this都指向undefined

***

实例

***


在这里插入图片描述
obj.myFun.call(db,‘成都’,‘上海’);     // 德玛 年龄 99 来自 成都去往上海
obj.myFun.apply(db,[‘成都’,‘上海’]); // 德玛 年龄 99 来自 成都去往上海
obj.myFun.bind(db,‘成都’,‘上海’)(); // 德玛 年龄 99 来自 成都去往上海
obj.myFun.bind(db,[‘成都’,‘上海’])();   // 德玛 年龄 99 来自 成都, 上海去往 undefined
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值