而对于一个普通的对象来说,如果它的所有property名均为正整数,同时也有相应的length属性,那么虽然该对象并不是由Array构造函数所创建的,它依然呈现出数组的行为,在这种情况下,这些对象被称为“类数组对象”。
var o ={0:7,1:8,2:9,length:3}
console.log(0);
可以用Array.from(o)来使其变成数组
[7,8,9]
与普通对象不同的是,类数组对象拥有一个特性:可以在类数组对象上应用数组的操作方法。比如,在ECMAScript 5标准中,可以用以下方法来将上面的对象o合并成字符串:
console.log(Array.prototype.join.call(o));
//输出:“7,8,9”
在浏览器环境中,document.getElementsByTagName()
语句返回的就是一个类数组对象。在function调用中,function代码内的arguments变量(保存传入的参数)也是一个类数组对象。
在ECMAScript 5标准中,字符串string就是一个只读的类数组对象:
1 var s = "godkun";
2 console.log(s[3]);
//输出:d
3 console.log(Array.prototype.join.call(s, " "));
//输出:g o d k u n