转换类似Array的对象,Array.prototype.slice或Array.from

时间:2016-05-03 04:27:33

标签: javascript

我知道有两种方法可以将类似Array的对象转换为Array。

  1. Array.prototype.slice.call(arguments)
  2. Array.from(arguments)
  3. 我想知道它们之间的区别是什么,我应该使用哪一个来转换类似数组的对象。

4 个答案:

答案 0 :(得分:5)

Array.prototype.slice.call一直是将类数组对象转换为数组的长期机制。如果您正在寻找浏览器兼容性,请使用此功能(虽然看起来在IE8及更低版本的某些旧版浏览器上这根本不起作用)。

Array.from于2015年6月引入了ECMA6。它完成了与先前机制相同的功能,只是以更流畅和简洁的方式。此外,Array.from可以将更多结构转换为数组,例如生成器。

了解array.from

答案 1 :(得分:1)

Array.prototype.slice.call(arguments)在许多浏览器中的工作速度比Array.from(arguments)快。

您可以在此处查看results

答案 2 :(得分:0)

slice适用于任何具有length属性的参数,这些参数可以方便地执行。

Array.from只是将类似Array或Iterable的对象转换为Array实例。

不幸的是,Array.from和Rest参数目前仅在较新版本的Firefox和Google Chrome中实现

请参阅link

答案 3 :(得分:-1)

如果您希望代码可移植,请使用第一种方法。第二种方法是ECMAscript 6的一部分,因此在一系列浏览器中得不到很好的支持。