javascript中applycall和bind的区别
Posted 傻了吧爷会飞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript中applycall和bind的区别相关的知识,希望对你有一定的参考价值。
javascript中apply、call和bind的区别
1、bind、call、apply重新定义this指向
注意:bind方法后面需要重新调用函数才会执行,call和apply方法是直接执行。
<script>
/* 改变this指向 */
let obj={
num:20
}
function test(){
console.log(this);//未修改this指向时,此时的this指向的是window,修改后this就指向obj
}
test.bind(obj)()//将test中的this指向改成obj对象,需要重新调用函数才会被执行
test.call(obj)//将test中的this指向改成obj对象,直接执行函数
test.apply(obj)//将test中的this指向改成obj对象,直接执行函数
</script>
2、bind、call、apply传参
- bind、call、apply除了修改this指向以外,还可以传参,只不过参数必须写在this对象的后面。
注意:bind和call中this对象后面的参数直接用逗号隔开,apply中this对象后面的参数要用数组的方式传入。
<script>
/* 传参 */
let obj={
num:20
}
function test(a,b){
console.log(a,b);
console.log(this);
}
test.bind(obj,190,89)()//this对象后面传入的参数直接用逗号隔开
test.call(obj,190,89)//this对象后面传入的参数直接用逗号隔开
test.apply(obj,[190,89])//this对象后面传入的参数直接用数组的方式传入
</script>
学习的课程:李南江的前端课程
以上是关于javascript中applycall和bind的区别的主要内容,如果未能解决你的问题,请参考以下文章