使用apply调用函数
实现函数 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');