实现函数 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');