数组是一段线性分配的内存,它通过整数去计算偏移并访问其中的元素。数组可以是很快的数据结构。不幸的是,Javascript没有这种数据结构。
js数组提供一个拥有类数组特性的对象。它把数组的下标转变为字符串,用其作为属性。它明显比一个真正的数组慢,但它可以更方便地使用。属性的检索和更新方式与对象一模一样。
数组字面量
js允许数组包含任一混合类型的值。
var numbers = [1,2,3];
//numbers继承array;
长度
每个数组都有一个length属性。js数组的length是没有上界的。如果你用大于或等于当前length的数字作为下标来保存一个元素,那么length将增大来容纳新元素。不会发生数组边界错误。
你可以直接设置length的值,设置更大的length无须给数组分配更多的空间。而把length设小将导致下标大于等于length的属性被删除。
枚举
用for…in…可能导致数组不按顺序出来
辨识数组(区分数组和对象)
var is_array = function(value){
return value&&
typeof value === 'object'&&
value.constructor === Array;
};
var is_array = function(value){
return value&&typeof value === 'object'&&
typeof value.length ==='number'&&
typeof value.splice === 'function'&&
!(value.propertyIsEnumerable('length'));
};