关于Js函数对象的apply()和call()方法
2017-04-08 15:54
585 查看
每个函数都包含两个非继承而来的方法,call()和apply().这两个方法都是在特定的作用域中调用函数,实际等于设置函数体内this对象的值。
首先apply()方法接受两个参数,一个是其中运行函数的作用域,另一个参数是数组,可以是Array的实例也可以是arguments对象。
例如:
function sum(num1,num2)
{
retuen num1+num2;
}
function callsum1(num1,num2)
{
return sum.apply(this,arguments);
}
function callsum2(num1,num2)
{
return sum.apply(this,[num1,num2]);
}
alert(callsum1(10,10));//20
alert(callsum2(10,10));//20
这里因为实在全局作用域中调用的所以this是window对象。
call()方法和apply()方法作用相同,第一个参数相同,后面的传入的参数必须逐个列举出来。
function sum(num1,num2)
{
return num1+num2;
}
function callsum(num1,num2)
{
return sum.call(this,num1,num2);
}
alert(callsum(10,10));//20
实际上传递参数并不是这两个方法的真正用武之地,他们真正的作用是扩展作用域。
window.color = “red”;
var o ={color:”blue’};
function saycolor(){
alert(this.color);
}
saycolor.call(this);//red
saycolor.call(window);//red
saycolor.call(o);//blue
这里前面两个传入的参数都是window所以输出的是red,第三个传入的参数是o所以是的saycolor的this属性指向o,输出blue
首先apply()方法接受两个参数,一个是其中运行函数的作用域,另一个参数是数组,可以是Array的实例也可以是arguments对象。
例如:
function sum(num1,num2)
{
retuen num1+num2;
}
function callsum1(num1,num2)
{
return sum.apply(this,arguments);
}
function callsum2(num1,num2)
{
return sum.apply(this,[num1,num2]);
}
alert(callsum1(10,10));//20
alert(callsum2(10,10));//20
这里因为实在全局作用域中调用的所以this是window对象。
call()方法和apply()方法作用相同,第一个参数相同,后面的传入的参数必须逐个列举出来。
function sum(num1,num2)
{
return num1+num2;
}
function callsum(num1,num2)
{
return sum.call(this,num1,num2);
}
alert(callsum(10,10));//20
实际上传递参数并不是这两个方法的真正用武之地,他们真正的作用是扩展作用域。
window.color = “red”;
var o ={color:”blue’};
function saycolor(){
alert(this.color);
}
saycolor.call(this);//red
saycolor.call(window);//red
saycolor.call(o);//blue
这里前面两个传入的参数都是window所以输出的是red,第三个传入的参数是o所以是的saycolor的this属性指向o,输出blue
相关文章推荐
- 谈谈关于js中关于函数的apply和call方法的理解
- js中函数对象的方法,原型方法apply、call、bind、toString、toLocaleString、valueOf
- JavaScript中函数对象的call()和apply()方法的总结
- 关于js中call()和apply()方法的区别
- Thin的DateChooser代码学习(关于js的函数参数为一个完整的函数以及“对象不支持此属性或方法”错误的解决)(原创,转载请声明)
- 【JS--基础--函数】--函数的通用方法-call()和apply()
- 轻松拿下JavaScript(四)——对象字面量,this,call()和apply()方法,JS的异常处理
- 函数对象的apply()和call()方法
- this指针在普通函数、对象方法、定时器、构造函数、事件函数、call()、apply()中的执行
- js 函数调用其他函数和方法 call,apply关键字
- 关于js的call()和apply()两个函数的一点个人看法
- 关于js中call、apply、bind方法的区别
- 从js对象类型的判断,附call与apply方法的区别
- #笔记#圣思园 JavaWeb 第57讲——JS继承:对象冒充、call方法、apply方法、原型链方式、混合方式
- 函数对象的内部方法call(), apply(), bind()
- js函数中的apply()、call()、bind()方法
- 第195天:js---函数对象详解(call、apply)
- JS中的call、apply、bind方法
- 深入理解关于javascript中apply()和call()方法的区别
- js function call,apply,bind方法