在开发的过程经常会遇到一些类数组对象,例如arguments,类数组对象具有length属性,也可以通过下标访问到对应值,但是不能使用数组的方法,如果将类数组对象转为数组,数组方法可以帮助我们更快实现逻辑,下面列举一些常见的转换方法。
循环遍历
根据arguments可以通过下角标获取对应值的特性,很容易可以想到通过循环遍历将arguments的值添加到新数组中,来实现转化,代码如下图:
slice函数
可能有人会有疑问,slice函数不是数组的方法吗,类数组对象不是不能调用数组方法吗?
这个问题的答案与循环遍历采取的方式有些相似,就是类数组对象不能调数组方法,那咱们就找个数组调用。slice函数不传参数时,表示对调用该函数的数组对象内容的全部截取,也就是说只要想办法把slice截取内容的对象修改为arguments就可以了。
这个时候,我们不难想到可以通过aplly,call,bind等方法修改this指向,代码如下图:
Array对象
利用Array对象提供的from方法,直接将类数组对象转化为数组,代码如下图:
通过Array对象的prototype属性,获取显式原型对象,调用slice方法,代码如下图: