• 间接调用


    call和apply可以间接的调用函数。

    1、允许显示的调用this。

    2、任何函数都可以作为任何对象的方法调用,哪怕这个函数不是这个对象的方法。

    3、参数问题,可以指定调用函数的实参,call使用调用函数的参数列表,而apply要求以数组形式传入。

    可选形参

    1、传入的实参少,那剩下的形参将是undefined;

    2、要给多余的形参,若是不存在实参,附一个初始值。

    3、可选的形参写在最后。

    4、可选的形参前面加上注释/**optional/。

    实参多

    1、arguments是实参的列表。

    2、实参数量大于形参时,多余的实参可以用arguments【2】,arguments【3】。。。获取。

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
        </head>
        <body>
        </body>
    </html>
    <script>
        function test(){
            console.log(arguments.length);
            console.log(arguments[2]);
            console.log(arguments[8]);
        }
        test(1,2,3,4,5,6,7);
    </script>

    不定实参函数:值不行、个数不到、顺序不定。

    实参的集合arguments还有一个属性特别有用:arguments.callee;返回正在执行的函数;

    <script>
        function test(n){
            n+=1;
            console.log(arguments.callee);
        }
        test(1);
    </script>

    也可用于递归运算:

    <script>
        var sum=0;
        function test(n){
            if(n>10) return sum;
            return sum=n+arguments.callee(n+1);
        }
        console.log(test(1));
    </script>

    形参多,记不住顺序。可以用一个将参数封在一个对象中,实参从对象中获取,对象的属性 键:值的形式,可以打乱顺序。

    例子:

    //定义目标数组和原数组、实参集合。
        var a=[1,2,3,4];
        var b=[];
        var ar={
            from:a,
            length:4,
            to:b,
        };  //多个实参的对象
        function arrayCopy(argus){
            //功能模块 都用统一的argus提供的接口获取参数
            for(var i=0;i<argus.length;i++){
                argus.to[i]=argus.from[i];
                console.log(a[i]);
                console.log(b);
            };
        };
        arrayCopy(ar); //运行函数

     当函数作为对象的属性调用时,函数就称为方法。

  • 相关阅读:
    遍历数组的常用方法
    ios 提审被拒4.3,更换账号提审处理
    js 判断手机有没有网络
    js网页拉起支付宝支付
    uni-app常用 HTML5+APP 设置
    uni-app 无痛刷新 token 方法
    uni-app通过判断接口403跳转登录页面的问题
    APICloud项目纪要
    Vue递归组件实现层层嵌套显示数据
    Git恢复删除的分支
  • 原文地址:https://www.cnblogs.com/gaidalou/p/5960478.html
Copyright © 2020-2023  润新知