关于如何将函数转换arguments为真实数组有很多解释.
但是,当你借助于简化代码时,我发现它非常有趣bind.
MDN Array.prototype.slice - 类似于数组的对象
MDN Function.prototype.bind - 创建快捷方式
例如:
function list() {
return Array.prototype.slice.call(arguments);
}
var list1 = list(1, 2, 3); // [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
简化通话:
var unboundSlice = Array.prototype.slice;
var slice = Function.prototype.call.bind(unboundSlice);
function list() {
return slice(arguments);
}
var list1 = list(1, 2, 3); // [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
如果您使用apply而不是call:它的工作方式相同:
var slice = Function.prototype.apply.bind(unboundSlice);
Run Code Online (Sandbox Code Playgroud)
通过使用call任何函数实例甚至可以缩短它,因为它与原型中的一个相同,并且与slice数组实例相同:
var slice = alert.call.bind([].slice);
Run Code Online (Sandbox Code Playgroud)
你可以试试
var slice = alert.call.bind([].slice);
function …Run Code Online (Sandbox Code Playgroud)javascript ×1