Java中,数组是一段线性分配的内存,它可以通过下标访问其中的元素。而JavaScript中的数组是采用了一种类似数组特性的对象,它把数组的下标转变成了一个字符串的属性保存在该对象中,故JavaScript中的数组比Java中的数组(真正的数组)要慢!但它可以更方便地使用!
数组定义:
Java中:
Object[] o = new Object[4];
------->o[1]=null
------->o.length=4
Java等大多数语言中,数组的所有元素类型必须相同,而由于JavaScript是弱数据类型的语言,所以数组中可以包含任意混合类型的值。
JavaScript:
var empty=[];
------>empty[1]=undefined
------>empty.length=0
var numbers=['one','two','three']
var numbers_object={
'0':'one','1':'two','2':'three'
}
numbers和numbers_object的相同点和不同之处:
·相同点:两者的属性有相同的名字和值
·不同:numbers继承Array。prototype,而number_object继承Object_prototype,所以numbers有许多内置方法和length属性,而numbers_objects没有。
添加元素:
numbers[numbers.length]='four';
number.push('go');
删除元素:
delete numbers[1] -------------->['one',undefined,'three']
numbers,splice(1,1) -------------->['one','three']
在JavaScript中区别数组和对象上没有好多机制:(以下提供了一个is_array函数来解决该问题在)
var is_array = funcion(value){
return value&&typeof value==='object'&&
typeof value==='number'&&
typeof value.splice==='function'&&
!(value.propertyisEnumberable('length'));
}
方法:
添加方法:
Array.method('reduce',function(f,value){
......
});