js中call,apply,bind方法的区别

每个函数都有call和apply和bind方法。

call方法的第一个参数是该函数的this指向,之后的参数即为函数的参数值,可传多个。

apply方法的第一个参数也是该函数的this指向,第二个参数为函数的参数,只能传入数组,数组内设置多个值。

以上这两者将会直接执行函数。

bind方法的第一个参数也是改变函数的this指向,之后的参数和call的传入方法相同,但该方法返回的还是一个函数,需要添加()手动执行。

        var obj = {
            name: 'pig'
        }
        function a() {
            console.log(this);
            console.log(arguments);
        }
        a.call(obj, 1, 2, 3);
        a.apply(obj, [1,2,3]);
        a.bind(obj, 1, 2, 3)();
     a.bind(obj, 1)(2, 3);//结果相同。

    

      (function b() {
        console.log(this);
      }).bind(obj)(); //效果相同

 

如果为以上三种方法的第一个参数设置为null,则this指向window。

原文地址:https://www.cnblogs.com/zhonghonglin1997/p/10395342.html