我正在尝试通过阅读 Fabric.js 的源代码来学习 Javascript。
在文件util/lang_array.js
中有一个看起来像这样的方法:
var slice = Array.prototype.slice;
function invoke(array, method) {
var args = slice.call(arguments, 2), result = [ ];
for (var i = 0, len = array.length; i < len; i++) {
result[i] = args.length ? array[i][method].apply(array[i], args) : array[i][method].call(array[i]);
}
return result;
}
我不明白这个说法var args = slice.call(arguments, 2)
。2
令我困惑的特定部分是作为第二个参数传递(考虑arguments
到应该是)。我查看了 JS 参考并得出结论,它基本上将 args 初始化为一个空数组。[array, method]
arguments[2]
null
那为什么不干脆var args = []
呢?
谢谢。