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的区别的主要内容,如果未能解决你的问题,请参考以下文章

javascript中applycall和bind的区别

javascript中applycall和bind的区别,容量理解,值得转!

javascript中applycall和bind的区别

javascript中applycall和bind的区别

javascript中applycall和bind的区别

javascript中applycall和bind的区别