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
  • 相关阅读:
    东拼西凑 vim配置-更新
    oh-my-zsh
    switch变种玩法
    每天一个linux命令(5):rm 命令
    每天一个linux命令(4):mkdir命令
    每天一个linux命令(3):pwd命令
    ES6学习之let
    Window.scrollTo()
    如何调整滚动条的样式
    移动端实现滚动的四种方案
  • 原文地址:https://www.cnblogs.com/sere/p/4800921.html
Copyright © 2011-2022 走看看