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

apply,call的用法

时间:2015-10-22 12:33:26      阅读:360      评论:0      收藏:0      [点我收藏+]

标签:

在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向。
JavaScript 的一大特点是,函数存在「定义时上下文」和「运行时上下文」以及「上下文是可以改变的」这样的概念。
先来一个栗子:
 
function fruits() {}
 function fruits(){};
fruits.prototype = {
    color: "red",
    say: function() {
        console.log("My color is " + this.color);
    }
}
 
var apple = new fruits;
apple.say();   

  

//此时有一个新的对象banana
var banana={
color:"yellow"
}
apple.say.call(banana);//my color is yellow
apple.say.apply(banana);//my color is  yellow

这样的效果说明apple这个对象在调用call或者apply方法后内部指针被指向了banana对象了。

 

 

apply,call的区别在于

  

var func = function(arg1, arg2) {
     
};

就可以通过如下方式来调用:

 

func.call(this,arg1,arg2);

func.apply(this,[arg1,arg2]);

 

其中 this 是你想指定的上下文,他可以是任何一个 JavaScript 对象(JavaScript 中一切皆对象),call 需要把参数按顺序传递进去,而 apply 则是把参数放在数组里。  

 

JavaScript 中,某个函数的参数数量是不固定的,因此要说适用条件的话,当你的参数是明确知道数量时用 call 。

 

而不确定的时候用 apply,然后把参数 push 进数组传递进去。当参数数量不确定时,函数内部也可以通过 arguments 这个数组来遍历所有的参数。

 

   

apply,call的用法

标签:

原文地址:http://www.cnblogs.com/diggingstven/p/4900266.html

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