我正在浏览Ramda.JS的源代码,它是Java开发人员的功能库。这几行代码使我有些困惑。
var sort = _curry2(function sort(comparator, list) {
return Array.prototype.slice.call(list, 0).sort(comparator);
});
我的问题是
Array.prototype.slice.call(list, 0)
应该与完全相同list.slice(0)
,但是第二种方法要短得多.call
在这里使用,为什么不使用第二种方法呢?
非常感谢@VLAZ。
该屏幕截图来自他在评论中建议的内容。
a.slice(0)
并且Array.prototype.slice.call(a, 0)
在非数组对象上有很大的不同。
值得注意的是,当不是数组/字符串并且没有方法时,使用Array.prototype.slice.call(arr, 0)
overarr.slice()
不会引发错误。arr
arr
slice
也许他们想要一个更可靠的实现,因此使用第一种方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句