我知道有两种方法可以将类似Array的对象转换为Array。
Array.prototype.slice.call(arguments)
Array.from(arguments)
我想知道它们之间的区别是什么,我应该使用哪一个来转换类似数组的对象。
答案 0 :(得分:5)
Array.prototype.slice.call
一直是将类数组对象转换为数组的长期机制。如果您正在寻找浏览器兼容性,请使用此功能(虽然看起来在IE8及更低版本的某些旧版浏览器上这根本不起作用)。
Array.from
于2015年6月引入了ECMA6。它完成了与先前机制相同的功能,只是以更流畅和简洁的方式。此外,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的一部分,因此在一系列浏览器中得不到很好的支持。