您的位置:首页 > 移动开发

【JavaScript】apply&call

2017-05-30 11:50 471 查看

函数调用

一、调用外部函数

在对象需要调用外部方法时,我们可以这样处理:

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,这样通过代码的重用,可降低开发工作量和运维工作量。

感谢您的宝贵时间,祝生活愉快,谢谢~~

——书生
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript 函数 html java