JavaScript 函数的apply()方法和call()方法
来源:互联网 发布:大学生竞赛网站知乎 编辑:程序博客网 时间:2024/05/28 05:13
在JavaScript中,每个函数都包含两个非继承而来的方法:apply( )和call( )。这
两个方法的用途都是在特定的作用域中调用函数,实际上等于设置函数体内this
对象的值。
(1)apply( )方法接收两个参数:一个是在其中运行函数的作用域,另一个是参数数组。
其中,第二个参数可以是Array的实例,也可以是arguments对象。如例1所示:
例1:
function sum(num1,num2){
return num1*num2;
}
function callSum1(num1,num2){
return sum.apply(this,arguments);//此时的this值是在全局作用域中调用的
}
function callSum2(num1,num2){
return sum.apply(this,[num1,num2]);
}
alert(callSum1(10,10));//结果为:100
alert(callSum2(100,10));//结果为:1000
(2)call( )方法与apply( )方法作用相同,区别仅在于接收函数的方式不同。对于call( )方
法而言,传递给函数的参数必须逐个列举出来。
apply( )方法和call( )方法能够扩充函数运行的作用域。如例2所示:
例2:
window.color="red";
var o={color:"green"};
var aaa={color:"gold"};
function getColor(){
alert(this.color);
}
getColor(); //输出值:red,在全局环境中调用,会使用全局属性
getColor.apply(this);//输出值:red,此处的this指的是全局环境
getColor.apply(o);//输出值:green,此处的this指的是o的环境
getColor.apply(aaa);//输出值:gold,此处的this指的是aaa的环境
(3)bind( )方法:
该方法会创建一个函数的实例,其this值会被绑定到传给bind( )函数的值。如例3所示:
例3:
window.color="red";
var o={color:"green"};
function getColor(){
alert(this.color);
}
var obj=getColor.bind(o);//此时getColor函数中this的值为o
obj();
- javascript 函数的方法call()和apply()
- JavaScript 函数的apply()方法和call()方法
- javascript 函数中的apply()和call()方法。
- javascript 函数方法apply()和call()的共同点和区别
- JavaScript之函数的apply和call方法。
- javascript中函数的call和apply方法
- javascript 的call和apply方法
- JavaScript 的apply和call方法
- Javascript 方法apply和call的区别
- javascript call和apply方法
- javascript call和apply方法
- JavaScript call()和apply()方法
- javascript中函数call方法和apply方法
- 函数的apply、call方法
- JavaScript中的apply()方法和call()方法
- javascript中的call方法和apply方法
- JavaScript中的apply()方法和call()方法
- JavaScript中的call方法和apply方法
- org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)异常处理
- C++实现RTMP协议发送H.264编码及AAC编码的音视频
- windows使用jenkins部署到centos总结
- google chrome 官方下载安装的方法和离线包官方下载
- Apache CXF 框架结构和基本原理
- JavaScript 函数的apply()方法和call()方法
- 编写函数: unsigned int reverse_bit(unsigned int value); 这个函数的返回 值value的二进制位模式从左到右翻转后的值
- windows安装jdk7和jdk8 、jdk版本切换
- 项目中最常用到的开源库,都是比较新且实用的
- 数据结构实验之查找一:二叉排序树
- /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory 的解决办法:
- 微信公众号开发 [02] 本地测试环境搭建
- <Effective C++>条款02:尽量以const,enum,inline替换#define
- Delphi整理二(Object Pascal语言)