谁能帮我解释一下这两个函数的用途,能举个调用的例子说明最好。 bindMethod是用来替换对象的bindArguments用来替换参数的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 好给你一个例子。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..这些做为参数传入. 谢谢rjzou2006,经你解释对call的用法有了更深的了解。虽然还是不太明白上面那个个函数的实际意义,但是我想可能还是理解不够深入,等再多了解相关知识,回头再看可能会有更好的理解吧。不管怎样还是谢谢了,分送了。 关于div iframe和textarea高度计算的问题 求助!js 复选框树 JS截取问题,麻烦高手帮帮忙,顶顶也可以 javascript 动态拆分单元格 请教关于使用COOKIES 做转向的问题 关于对联广告不能滚动的问题 这个自动提示框为什么在ff用不了 表格移动行的问题?????在线求教,紧急求助!!!!!!!!! 谁有javascript 编写下拉菜单的源码? 阅读大容量txt文件并写入txt文件中 checkbox 全选的问题 【请教】给img元素添加error属性的问题。thumbImg.setAttribute("onerror",error)
调用一个对象的一个方法,以另一个对象替换当前对象。
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..这些做为参数传入.