日期:2014-05-16  浏览次数:20410 次

javascript中的call()与apply()方法
    javascript中的call()方法与apply()方法 是函数的内置方法,所有的函数都具有这两个方法。这两个方法是通过函数名来调用的。这两个方法的作用是:传递一个对象作为参数,这个对象来调用这个函数。
下面来看一下call():
例:有一个函数:
function test(x,y){
   this.x=x;
   this.y=y;
}

我们定义了这个函数。同时,这个函数中已经有了call(),这个方法,此时可以调用了:
test.call(obj,2,5);//test函数调用call()方法

先解释一下参数: obj:是一个对象      2和5:是函数test的两实参
这段代码代表了一个对象obj调用了test这个函数。它将test函数作为对象obj的一个方法来调用了。把它翻译成java代码或许好理解一些:obj.test(2,5);
    可以看到,函数test是作为obj对象的方法被调用了。此时,函数test中的this代表的是obj这个对象。此方法经常用在子类构造方法中,在继承父类时,来调用父类的构造函数。


apply()方法与call()方法类似,只是将函数test的所有的参数放在一个数组中而已。即:apply()方法只有两个参数,一个是obj对象,另一个是数组,这个数组中存放的是test函数的所有实参。例:
test.apply(obj,[2,5]);//调用apply()方法,只有两个参数