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())来扩充作用域的最大好处,就是对象不需要与方法有任何耦合关系。

  • 相关阅读:
    存储数据的大小端模式
    双链表插入 删除详解
    php_match/preg_match_all 默认有字符串长度限制
    百度编辑器:获取编辑器的内容
    phalcon: update修改数据却变成了insert插入数据
    MySQL按照汉字的拼音排序,mysql汉字排序
    [转载]Eclipse提示No java virtual machine
    lhgdialog: iframe页面里面的,确定,关闭、取消按钮的操作
    js树目录结构
    mysql:恢复mysql表结构
  • 原文地址:https://www.cnblogs.com/wlfsmile/p/5890668.html
Copyright © 2011-2022 走看看