使用apply调用函数

时间:2019-09-18 12:13:03   收藏:0   阅读:174

实现函数 calllt,调用之后满足如下条件
1.返回的结果为调用fn之后的结果
2.fn的调用为calllt的第一个参数之后的全部参数

 

方法1

使用es6

      function calllt(...param){
            param.shift(0);
            return fn.apply(this, param);
        }

      function fn(...param){
            console.log(param);
            return 1;
        }

      calllt(‘asd‘, ‘sddd‘,‘ssssssss‘);

  方法2

循环出一个新数组

        function calllt(){  
            var arr = arguments;
            var newarr = [];
            for(var i = 0;i < arr.length;i++){
                newarr.push(arr[i]);
            }
            return fn.apply(this, newarr);
        }  

        function fn(){
            console.log(arguments);
            return 1;
        }

        var back = calllt(‘sdd‘, ‘sddd‘);
        console.log(back);  

  

  方法3 

使用 

Array.prototype.slice 拷贝成一个新数组
       function calllt(){  
            var arr = Array.prototype.slice.call(arguments, 0);
            arr.shift();
            return fn.apply(this, arr);
        }  
        
        function fn(){
            return 1;
        }

        var back = calllt(‘sdd‘, ‘sddd‘,‘aaaaaaaaa‘);

  

原文:https://www.cnblogs.com/chenyi4/p/11540769.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!