Array.from(arguments)是否是创建参数数组的可接受方式?

时间:2015-11-16 05:15:25

标签: javascript arrays arguments

Array.from(arguments)在某种程度上比Array.prototype.slice.call(arguments)更难以创建一个参数数组吗?我还没有看到前者在任何地方使用,后者似乎是从我读过的内容创建参数数组的标准方法。有人能够解释这种差异吗?

2 个答案:

答案 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兼容代码。