Array.from(arguments)
在某种程度上比Array.prototype.slice.call(arguments)
更难以创建一个参数数组吗?我还没有看到前者在任何地方使用,后者似乎是从我读过的内容创建参数数组的标准方法。有人能够解释这种差异吗?
答案 0 :(得分:0)
听起来Array.from(arg)
是更好的方法,因为它正是这个函数应该做的。
但是,此功能是a new standard ECMAScript 6的一部分。根据{{3}},所有浏览器都不支持它。
由于它是一种“实验性”功能,它仍然没有在任何地方使用。在可预见的将来,我们会看到Array.from
无处不在。
例如,有一些很好的功能,如:
var str = "abcdef";
if (str.startsWith('abc') && str.endsWith('def'))
但是,如果您使用此功能打开随机网站,那么您将看到使用RegExp或indexOf
的自定义自定义函数。原因是所有这些网站都是在引入此标准之前编写的。
与此同时,许多开发人员更喜欢使用旧式功能,因为所有浏览器都支持它们。引入新标准并迁移到它很难。
答案 1 :(得分:0)
Array.from()
是ES6指定的从任何类似数组的对象或可迭代对象创建Array对象的方法。
var arr = Array.from(arguments)
是一本教科书的例子,旨在取代之前的解决方案,例如:
var arr = Array.prototype.slice.call(arguments)
唯一的问题是这是ES6功能,因此只出现在最新的浏览器中。要在许多浏览器中安全地使用它,您可以安装像one here on MDN这样的polyfill,也可以使用类似BabelJS的东西将ES6代码转换为ES5兼容代码。