传播一个array_like对象,相当于Array.prototype.slice.call(array_like)

时间:2017-11-21 04:18:17

标签: javascript ecmascript-6

有关传播运营商如何运作的一些信息会很棒。它与ES2015中引入的新符号有什么关系吗?

1 个答案:

答案 0 :(得分:1)

与Symbol无关,除了对象使用扩展语法需要Iterable符号。它并不等同于Array.prototype.splice调用,尽管你可能意味着Array.prototype.slice(),它只是用于制作类似数组的对象的浅层副本。

有点类似于使用.apply来调用函数,将集合作为第二个参数传递,它作为单独的参数展开。但是,与.apply()不同,您可以使用多个集合(具有多个“点差”),并且可以在传播集合之前和之后传递其他参数。

此外,使用.apply()任何类似数组的对象都可以工作(具有数字索引和.length),但在ES3中只有Arrays和Arguments对象有效。但扩展语法仅适用于Iterable对象。