javascript - 何时使用 call 或在 JavaScript 中使用 call 有什么好处?
问题描述
我正在浏览 Ramda.JS 的源代码,它是 Javascript 开发人员的功能库。这几行代码让我有点困惑。
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
在这里使用,为什么不使用第二种方式?- 在这里使用 call 有什么好处吗?
参考
更新
非常感谢@VLAZ。
此屏幕截图来自他/她在评论中建议的内容。
a.slice(0)
并且Array.prototype.slice.call(a, 0)
在非数组对象上非常不同。
解决方案
值得注意的是,当不是数组/字符串且没有方法时,使用Array.prototype.slice.call(arr, 0)
overarr.slice()
不会引发错误。arr
arr
slice
也许他们想要一个更健壮的实现,因此使用第一种方法。
推荐阅读
- javascript - Highcharts JS-为两个系列的工具提示添加第三个变量
- angular - 从 chrome 检查隐藏存储在网站上的视频文件
- python - 如何在多个条目小部件上绑定鼠标操作
- php - php中的递增函数出错
- r - R如何将不同类型的变量打印到一个txt文件中
- google-apps-script - Google App Script - 列出所有包含的工作表
- php - 如何检查是否定义了索引?
- php - laravel中的递归外键
- constraint-programming - 是否可以在构建后修改 cp_sat 模型?
- android - 如何模拟包含其他属性的对象(用户定义的 pojo)?