访问bind函数中的参数集合

时间:2015-01-20 15:17:47

标签: javascript

从更高阶函数返回.bind()时,是否可以在绑定上下文中访问arguments集合?

以下面的函数为例:

function reverse(fn) {
     return function ()  { 
        return fn.apply(this, [].slice.call(arguments).reverse()) 
     };
}

理想情况下,我想删除内部函数包装器,只需返回类似:

的内容

return fn.apply.bind(fn, [].slice.call(arguments).reverse());

(显然arguments的范围是外部函数,而不是返回的函数,这就是我所追求的。)

这是通过我不知道的某种机制还是函数包装器是必要的吗?

1 个答案:

答案 0 :(得分:1)

当您无法控制正在尝试的函数的词法范围时,

.bind是设置上下文和/或固定初始参数列表的好方法.bind }。

内部.bind只是创建一个函数,所以在这里没有任何优势 - 根据我的经验,内部函数无法实现更好的其他用途。

事实上,在这种情况下,它根本无法工作 - 您必须为.reverse()调用发生的位置提供某种范围,并且唯一可以在该内部函数中的位置。