【JavaScript】apply&call

来源:互联网 发布:洁厕剂的知乎 编辑:程序博客网 时间:2024/06/04 01:00

函数调用

  • 一、调用外部函数
  • 在对象需要调用外部方法时,我们可以这样处理:
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属性值。
输出box.color的值boxblue
- 二、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);            //windowsayColor.call(box);         //box

函数调用/冒充
上述代码中,通过call,box对象直接获取到window.sayColor,这样通过代码的重用,可降低开发工作量和运维工作量。

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

原创粉丝点击