js中将类数组转换为数组的几种方法
1. slice
[].slice.call(arguments)能将具有length属性的对象转成数组
[].slice === Array.prototype.slice;
slice方法如果不传参数的话会返回原数组的一个拷贝,通过call显式绑定来实现arguments变相有slice这个方法。
2. Array.from()
var arr = Array.from(arguments);
3. 扩展运算符
ES6中的扩展运算符...也能将某些数据结构转换成数组,这种数据结构必须有遍历器接口。
var args = [...arguments];
4. $.makeArray()
jQuery的此方法可以将类数组对象转化为真正的数组
var arr = $.makeArray(arguments);
转成数组的通用函数
var toArray = function(s){
//try语句允许我们定义在执行时进行错误测试的代码块。
//catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块。
try{
return Array.prototype.slice.call(s);
} catch(e){
var arr = [];
for(var i = 0,len = s.length; i < len; i++){
//arr.push(s[i]);
arr[i] = s[i]; //据说这样比push快
}
return arr;
}
}