call和apply的区别

为了加强call和apply的理解,大致的写点让自己较易理解,就是对参数继承时数据类型不同;


call例子: 

var d = "",
 v = "ffff",
 l = "ddddd";
 (function (b, c) {
    console.log("b="+b);

    console.log("\n");
     console.log("c="+c)
 }).call(d, v, l)

 控制台输出:   

很显然call(d, v, l)其中d可传this一样调用该函数的对象,可为NULL(此时为window),v, l作为参数依次对应传给b和c
 
apply例子:
    
 1      var d = "",
 2            v = ["ffff", "ddddd"];  
 3            
 4  (function (b, c) {
 5              
 6            console.log("b=" + b);
 7               
 8            console.log("\n");
 9            
10            console.log("c=" + c)
11          
12    }).apply(d, v)

 控制台输出:   

   apply(d, v)其中d可传this一样调用该函数的对象,可为NULL(此时为window),v是一个数组参数,数组中的值依次对应传给b和c

  

   可以看出call和apply区别在于call后面的每一个参数和其调用的函数中的参数依次相对应,apply是数组与其对应关系。当然这只是简单的理解下便于自己对它们关系的理解,希望对你们也有用,谢谢!

  

posted @ 2017-10-12 18:19  leehf  阅读(348)  评论(0编辑  收藏  举报