zoukankan      html  css  js  c++  java
  • JavaScript(9)——call与apply

    call与apply

    call和apply方法可以通过函数名称来调用函数。有两个参数

    call()方法与apply()方法的作用相同,他们的区别仅在于接收参数的方式不同。

    【call】

    调用一个对象的一个方法,以另一个对象替换当前对象。

    call()方法是与经典对象冒充方法最相似的方法。他的第一个参数用作this对象,其他参数都直接传递给函数自身。

    对于call而言,第一个参数是上下文对象,第二个参数是不同的函数参数。

    call是通过参数列表来完成传递, 其他与apply没有区别

    【apply】

    应用某一对象的一个方法,用另一个对象替换当前对象。

    对于apply而言,有两个参数,第一个是调用的上下文,第二个是参数数组,可以直接把argument传进去。

    【call与apply的用法与区别】

    function sum(num1,num2){
        return num1+num2;
    }
    function callSum1(num1,num2){
        //使用sum这个函数来完成一次调用,调用的参数就是函数callSum1这个函数的参数
        //apply的第二个参数代表一组参数数组
        return sum.apply(this,argument);
    }
    function callSum2(num1,num2){
        //第二个参数是数组
        return sum.apply(this,[num1,num2]);     
    }
    function callSum3(num1,num2){
        //通过参数列表来完成传递  
        return sum.call(this,num1,num2);
    }

    如果直接传入argument对象,或者包含函数中先接收到的也是一个数组,那么使用apply()方法比较方便,否则,选择call()更加合适。如果在不给函数传递参数的情况下,使用哪个方法都可以。

    call()与apply()真正强大的地方是能够扩充函数赖以运行的作用域。使用call()(或apply())来扩充作用域的最大好处,就是对象不需要与方法有任何耦合关系。

  • 相关阅读:
    路由器实验之配置实验、直连路由验证、静态路由
    RIP路由选择实验
    多线程编程核心技术(十五)CountDownLatch和CyclicBarrier
    maven新建项目时的Run配置
    archetypeCatalog=internal
    Archetype插件的介绍和使用
    maven POM中的source和target编译参数是什么意思
    什么是IOC?
    什么是POJO?
    @SpringBootConfiguration注解
  • 原文地址:https://www.cnblogs.com/wlfsmile/p/5890668.html
Copyright © 2011-2022 走看看