bind(),apply()和call()

bind(),apply()和call()

总结一下,call、apply 和 bind 的作用都是改变 this 的指向,其中 call 和 apply 的区别在于它们传参的方式不同——call可以传多个形参,而apply只能传一个数组形参。

而bind和call、apply的区别在于bind不会立即调用,而是返回一个函数对象,因此开发中一般用bind比较多

 

保留两个API没什么特殊的原因,只是为了开发方便。如果参数比较多,或者已经是数组形式存储,用apply()方便一点。社区还有一句口诀:A useful mnemonic is "A for array and C for comma."(一个有用的助记是“A代表数组,C代表逗号。)

 

            function add(a, b) {
                return a + b;
            }
            function sub(a, b) {
                return a - b;
            }
            // apply的用法
            var a1 = add.apply(sub, [4, 2]);  //sub调用add的方法
            var a2 = sub.apply(add, [4, 2]);
            alert(a1);  //6     
            alert(a2);  //2
            // call的用法
            var b1 = add.call(sub, 4, 2);
            alert(b1);  //6 
            // bind的用法
            var c1 = add.bind(sub,4, 2)
            alert(c1()); //6

 

参考

apply()和call()的区别

https://www.cnblogs.com/lengyuehuahun/p/5643625.html

posted @ 2021-02-01 18:11  泠风lj  阅读(60)  评论(0编辑  收藏  举报