二次封装函数 arguments

链接:https://www.nowcoder.com/questionTerminal/694afeb930f74392bda01a815219d81b
来源:牛客网
二次封装函数
实现函数 partialUsingArguments,调用之后满足如下条件:
1、返回一个函数 result
2、调用 result 之后,返回的结果与调用函数 fn 的结果一致

3、fn 的调用参数为 partialUsingArguments 的第一个参数之后的全部参数以及 result 的调用参数

function partialUsingArguments(fn) {
    var a=Array.prototype.slice.call(arguments,1); //argument是关键字 表示当前参数 虽然以数组形式表示 但没有原生数组功能
    return function result(){
        var b=Array.prototype.slice.call(arguments); //没有原生数组的功能 用call改变指向
        return fn.apply(this,a.concat(b))}
}

转载自:点击打开链接

Array.prototype.slice.call(arguments,1)该语句涉及两个知识点。

arguments是一个关键字,代表当前参数,在javascript中虽然arguments表面上以数组形式来表示,但实际上没有原生数组slice的功能,这里使用call方法算是对arguments对象不完整数组功能的修正。

slice返回一个数组,该方法只有一个参数的情况下表示除去数组内的第一个元素。就本上下文而言,原数组的第一个参数是“事件名称”,具体像“click”,"render"般的字符串,其后的元素才是处理函数所接纳的参数列表。


你可能感兴趣的:(二次封装函数 arguments)