码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2015-08-25 18:35:20      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

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

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

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

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!