zoukankan      html  css  js  c++  java
  • 理解apply()和call()

      首先,每个函数都包含两个非继承而来的方法:appl()和call()。这两个方法的用途都是在特定的作用域中调用函数,实际等于设置函数体内this对象的值。

    这两个方法接收的参数可以分为两个部分,

      第一部分是在其中运行函数的作用域,如果就在当前函数体中运行,就可以直接使用this值,如果在window作用域中使用,可以传入window值,这样,可以实现扩充作用域;

      第二部分是参数组,在apply中可以传入Array实例,也可以是arguments对象;在call中,传递给函数的参数必须逐个列举;如果没有参数,这个部分可以省略。

    举个例子,如下所示:

     1 function sum(num1,num2){
     2   return num1+num2;
     3 }
     4 
     5 //两个数相等就相加,不相等就相乘
     6 function mul(num1,num2){
     7   if(num1 != num2){
     8     return num1*num2;
     9   }else{
    10     return sum.apply(this,arguments);
    11     //可以为 sum.apply(this,[num1,num2])或sum.call(this,num1,num2);
    12   }
    13 }
    14 
    15 console.log(mul(5,6));   //30
    16 console.log(mul(6,6));   //12
  • 相关阅读:
    动手动脑3
    AWK编程与应用
    BASH内置变量的使用
    服务器交互脚本expect
    编程对话框的界面程序
    每日打卡
    AppiumLibrary中文翻译
    Bootstrap4简单使用
    Python基础06-类与对象
    BDD模式-Python behave的简单使用
  • 原文地址:https://www.cnblogs.com/sere/p/4800921.html
Copyright © 2011-2022 走看看