函数调用
- 一、调用外部函数
- 在对象需要调用外部方法时,我们可以这样处理:
window.color='windowRed';
function sayColor(){ //动态执行,第一次this指向window、第二次this指向box
alert(this.color);
}
var box={
color:'boxblue'
};
box.sayColor=sayColor; //通过赋值语句将window.sayColor方法复制到box里面,使box具有window的sayColor方法
box.sayColor(); //这里执行box通过赋值从window对象借来的sayColor方法,this指向box对象 */
通过第10行代码,box.sayColor获得window.sayColor的方法;同时this指针由window指向box,从而输出box的color属性值。
- 二、apply和call
- 1、相同点
- 1)两者都是非继承而来的方法;
- 2)两者都是通过接收参数实现函数的调用
- 2、不同点
- 1)apply传递的是参数的集合
- 2)call传递的是一个个单独的参数
- 3、参考
- 1)再不需要传递参数时,推荐使用call调用函数,效率会更高一点。
- 2)通过call或者apply可以将类和方法的低耦合,从而提高代码的维护效率
var color='red';
var box={
color:'blue'
};
function sayColor()
{
alert(this.color); //提供被调用的函数体,本属于window
}
sayColor.call(this); //window
sayColor.call(box); //box
上述代码中,通过call,box对象直接获取到window.sayColor,这样通过代码的重用,可降低开发工作量和运维工作量。
感谢您的宝贵时间,祝生活愉快,谢谢~~
——书生