【JavaScript】[bind,call,apply] (function cal(){}());声明函数立即执行

---恢复内容开始---

1、js 里函数调用有 4 种模式:方法调用、正常函数调用、构造器函数调用、apply/call 调用。
同时,无论哪种函数调用除了你声明时定义的形参外,还会自动添加 2 个形参,分别是 this 和arguments


2、apply:apply 函数接收 2 个参数,第一个是传递给这个函数用来绑定 this 的值,第二个是一个参数
数组。

call和apply的存在是为了改变this的绑定。
注意:区别就是call后面接受的是不定参数,而不是数组。
看代码:

    function a(xx, yy) {     
        alert(xx, yy);     
        alert(this);     
        alert(arguments);
    }
    a.apply(null, [5, 55]);
    a.call(null, 5, 55); 

3、call和apply会立即执行函数,二bind不会,它会生成一个新的函数。
其它和call一样子,看代码:

var m = {    
        "x" : 1
    };
    function foo(y) {
        alert(this.x + y);
    }
    foo.apply(m, [5]);
    foo.call(m, 5);
    var foo1 = foo.bind(m, 5);
    foo1(); 

醍醐灌顶:

源:http://rangercyh.blog.51cto.com

原文地址:https://www.cnblogs.com/oiliu/p/4757850.html