从更高阶函数返回.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
的范围是外部函数,而不是返回的函数,这就是我所追求的。)
这是通过我不知道的某种机制还是函数包装器是必要的吗?
答案 0 :(得分:1)
.bind
是设置上下文和/或固定初始参数列表的好方法.bind
}。
内部.bind
只是创建一个函数,所以在这里没有任何优势 - 根据我的经验,内部函数无法实现更好的其他用途。
事实上,在这种情况下,它根本无法工作 - 您必须为.reverse()
调用发生的位置提供某种范围,并且唯一可以在该内部函数中的位置。