1 | function test(){ |
我们经常可以看到一些文档或者比人的源码之中用这种方式把arguments
转化为数组,但是为什么可以这样子操作呢,现在我们可以看一下Array.prototype.slice
他的实现原理是怎样的。
slice 的原理
1 |
|
我们可以到 slice
其实是在用 this
访问对象的属性,通过call
将arguments
绑定到this
上,以此可以遍历出 arguments
的全部参数。
通过 slice
的底层原理我们也可以看出,如果我们传一个字符串进去,会把字符串转化为数组
1 | [].slice.call('12345'); // [1,2,3,4,5] |
ES6的新方法
ES6 给 Array
新加了一个方法,我们也可以通过他把 arguments 转化为数组。
1 |
|
相比于 slice
,from
更强大一点,from
还可以将带有遍历器属性[Symbol.iterator]
的对象转化为数组
例如我们可以这样操作
1 |
|