call/apply/bind的区别
Posted fengshaopu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
以上是关于call/apply/bind的区别的主要内容,如果未能解决你的问题,请参考以下文章