在javascript里有一种array-like的对象,就是和Array很像,比如拥有push,slice等方法,拥有length属性,而且你可以很容易的创建一个这样的对象:
var foo = {0:'hello',1:'world',length:2,slice:Array.prototype.slice}
转变成一个数组对象:
console.log(Array.prototype.slice.call(foo,0));
//["hello", "world"]
console.log(foo.slice())
//["hello", "world"]
这里是因为这个像数组的对象拥有这个slice方法,如果没有呢?就不能直接使用,要使用原型的方法调用了。如下:
console.log(Array.prototype.splice.call(foo,0));
//["hello", "world"]
console.log(foo.splice())
//TypeError: Object #<Object> has no method 'splice'
常用的arguments对象, document.links, document.forms等都是非常像数组(Array)的,可以使用Array.prototype.slice.call将其转换成数组操作。