call/apply/bind的区别

一、总结
1.call跟apply跟bind都可以修改this指向
2.call 用于后面是一个一个数据的情况下
3.apply用于后面是数组的情况下
4.bind后面要多加一步()

二、call跟apply跟bind都可以修改this指向

function f(){
    console.log(this.name)
}
var v={
    name:'我是'
}

f.call(v)  //call
f.apply(v)  //apply
f.bind(v)  //bind
 

三、call 用于后面是一个一个数据的情况下

function f(){
console.log(arguments)
Array.prototype.push.call(arguments,100)
}
f(1,5,6)

四、apply用于后面是数组的情况下

function f(){
console.log(arguments)
Array.prototype.push.call(arguments,[1,3,6,9])   //后面是数组的情况下用call的话就不能一个一个的数据放进去了
使用我们要用 apply
Array.prototype.push.apply(arguments,[1,3,6,9])
结果为:
0: 1
1: 5
2: 6
3: 1
4: 3
5: 6
6: 9
}
f(1,5,6)

五.bind后面要多加一步()
bind的话后面得从新调用一个否则就是只修改了this指向


function f(){
console.log(arguments)
Array.prototype.pop.bind(arguments)()
}


f(1,5,6)

结果为:
0: 1
1: 5
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值