首页 > 解决方案 > 何时使用 call 或在 JavaScript 中使用 call 有什么好处?

问题描述

我正在浏览 Ramda.JS 的源代码,它是 Javascript 开发人员的功能库。这几行代码让我有点困惑。

var sort = _curry2(function sort(comparator, list) {
  return Array.prototype.slice.call(list, 0).sort(comparator);
});

我的问题是

参考


更新

非常感谢@VLAZ

此屏幕截图来自他/她在评论中建议的内容。

a.slice(0)并且Array.prototype.slice.call(a, 0)在非数组对象上非常不同。

标签: javascriptarraysfunctional-programmingprototyperamda.js

解决方案


值得注意的是,当不是数组/字符串且没有方法时,使用Array.prototype.slice.call(arr, 0)overarr.slice()不会引发错误。arrarrslice

也许他们想要一个更健壮的实现,因此使用第一种方法。


推荐阅读