JavaScript中的 apply 与 call 方法
2009-01-02 10:41
309 查看
call方法的官方解释为:
调用一个对象的一个方法,以另一个对象替换当前对象。
call([thisObj[,arg1[, arg2[, [,.argN]]]]])
参数
thisObj
可选项。将被用作当前对象的对象。
arg1, arg2, , argN
可选项。将被传递方法参数序列。
说明
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。
================================================================================================================================
apply方法的官方解释为:
应用某一对象的一个方法,用另一个对象替换当前对象。
apply([thisObj[,argArray]])
参数
thisObj
可选项。将被用作当前对象的对象。
argArray
可选项。将被传递给该函数的参数数组。
说明
如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。
如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。
从上面官方的介绍可以看出,两者实现的功能是完全一样的,只是参数传递方式不一样,call是将各个参数以“,”隔开,而apply是将所有参数组成一个数组进行传递。
举例来说明两个方法的用法:
function funa() {
this.o = "I'm string o";
this.i = "I'm string i";
//未定义this.u,但调用的是funb里面的,所以定不定义都无所谓;
this.fun = function(t,z) {
var s = "this.o: " + this.o + "/nthis.i: " + this.i + "/nthis.u: " + this.u + "/nt: " + t + "/nz: " + z;
alert(s);
}
}
function funb() {
this.o = "I'm other string o";
//未定义this.i,所以返回undefined
this.u = "I'm string u";
}
var a = new funa();
var b = new funb();
/*
运行a对象的fun方法时,将a的this转为b对象的this
因此funa里面的this.o实际是funb里面的this.o
*/
a.fun.call(b,"1st arg","2nd arg");
从上面的例子可看出:
obj1.method1.call(obj2,argument1,argument2)
简单的说就是把obj1的方法放到obj2上使用,后面的argument1..这些做为参数传入.
调用一个对象的一个方法,以另一个对象替换当前对象。
call([thisObj[,arg1[, arg2[, [,.argN]]]]])
参数
thisObj
可选项。将被用作当前对象的对象。
arg1, arg2, , argN
可选项。将被传递方法参数序列。
说明
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。
================================================================================================================================
apply方法的官方解释为:
应用某一对象的一个方法,用另一个对象替换当前对象。
apply([thisObj[,argArray]])
参数
thisObj
可选项。将被用作当前对象的对象。
argArray
可选项。将被传递给该函数的参数数组。
说明
如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。
如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。
从上面官方的介绍可以看出,两者实现的功能是完全一样的,只是参数传递方式不一样,call是将各个参数以“,”隔开,而apply是将所有参数组成一个数组进行传递。
举例来说明两个方法的用法:
function funa() {
this.o = "I'm string o";
this.i = "I'm string i";
//未定义this.u,但调用的是funb里面的,所以定不定义都无所谓;
this.fun = function(t,z) {
var s = "this.o: " + this.o + "/nthis.i: " + this.i + "/nthis.u: " + this.u + "/nt: " + t + "/nz: " + z;
alert(s);
}
}
function funb() {
this.o = "I'm other string o";
//未定义this.i,所以返回undefined
this.u = "I'm string u";
}
var a = new funa();
var b = new funb();
/*
运行a对象的fun方法时,将a的this转为b对象的this
因此funa里面的this.o实际是funb里面的this.o
*/
a.fun.call(b,"1st arg","2nd arg");
从上面的例子可看出:
obj1.method1.call(obj2,argument1,argument2)
简单的说就是把obj1的方法放到obj2上使用,后面的argument1..这些做为参数传入.
相关文章推荐
- JavaScript之call()和apply()方法详解
- javascript中的一些常用方法:call() , apply() , slice() , sort()
- Javascript中call,apply,bind方法的详解与总结
- JavaScript中call,apply,bind方法的总结。
- JavaScript中的 apply 与 call 方法
- 关于javascript中apply()和call()方法的区别
- 关于javascript中apply()和call()方法的区别
- Javascript call和apply区别及使用方法
- javascript中的call和apply方法
- javascript中apply,call,bind方法
- javascript中call与apply的使用方法
- JavaScript——prototype属性的apply方法和call方法
- javascript中的call()和apply()方法 - 原创实例
- JavaScript中的apply、call和bind方法
- javascript中的call()和apply()方法的使用
- JavaScript call() 与 apply() 方法的实现与思路解析
- JavaScript的apply和call方法及其区别
- 基于JavaScript实现继承机制之调用call()与apply()的方法详解
- 【js基础】javascript中的apply() call() bind() 方法是javascript专业人员的基础[译]
- javascript 之call() 和apply()方法