函数的apply、call方法
来源:互联网 发布:淘宝全屏店招安装 编辑:程序博客网 时间:2024/05/17 07:26
转载自《征服AjaxWeb 2.0开发技术详解》6.2.6
JavaScript为函数对象定义了两个方法:apply和call,它们的作用都是将函数绑定到另
外一个对象上去运行,两者仅在定义参数的方式有所区别:
Function.prototype.apply(thisArg,argArray);Function.prototype.call(thisArg[,arg1[,arg2…]]);从函数原型可以看到,第一个参数都被取名为thisArg,也就是说,所有函数内部的this
指针都会被赋值为thisArg,这就达到了将函数作为另外一个对象的方法运行的目的。两个
方法除了thisArg 参数,都是为Function 对象传递的参数。下面的代码说明了apply 和call
方法的工作方式:
//定义一个函数func1,具有属性p和方法Afunction func1(){ this.p="func1-"; this.A=function(arg){ alert(this.p+arg); }}//定义一个函数func2,具有属性p和方法Bfunction func2(){ this.p="func2-"; this.B=function(arg){ alert(this.p+arg); }}var obj1=new func1();var obj2=new func2();obj1.A("byA"); //显示func1-byAobj2.B("byB"); //显示func2-byBobj1.A.apply(obj2,["byA"]); //显示func2-byA,其中[“byA”]是仅有一个元素的数组,下同obj2.B.apply(obj1,["byB"]); //显示func1-byBobj1.A.call(obj2,"byA"); //显示func2-byAobj2.B.call(obj1,"byB"); //显示func1-byB
可以看出,obj1的方法A被绑定到obj2运行后,整个函数A的运行环境就转移到了obj2,
即this指针指向了obj2。同样obj2 的函数B也可以绑定到obj1 对象去运行。代码的最后4
行显示了apply和call函数参数形式的区别。
0 0
- 函数的apply、call方法
- javascript 函数的方法call()和apply()
- 【JS--基础--函数】--函数的通用方法-call()和apply()
- JavaScript 函数的apply()方法和call()方法
- 函数的call() apply()方法 的作用和区别
- js 的 apply / call 函数
- 函数的属性length、prototype和方法call()、apply()
- javascript函数对象的内部方法call(), apply(), bind()
- 关于Js函数对象的apply()和call()方法
- JavaScript之函数的apply和call方法。
- javascript中函数的call和apply方法
- javascript 函数方法apply()和call()的共同点和区别
- JavaScript函数方法apply()与call()的区别
- 函数非继承方法:apply()和call()
- javascript 函数中的apply()和call()方法。
- call方法和apply方法的区别
- js的call方法和apply方法
- 关于javascript的apply和call函数
- 跳板机的作用
- Windows7无法自动将IP协议堆栈绑定到网络适配器的办法
- 自定义Flash ActionScript中的trim函数,去回车函数,字符串替换函数,字节换算函数
- 做程序猿的老婆应该注意的一些事情
- IOstream 标准库
- 函数的apply、call方法
- Linux 网络编程socket错误分析
- 常用AS3类包和工具
- Shell编程-字符处理命令
- NGUI不规则形状点击
- 郁金香汇编逆向与外挂(60)
- CSDN-markdown编辑器语法——字体、字号与颜色
- spring配置tomcat的jndi数据源
- some codes about broadcast intent