JavaScript中其实并没有数组,他是一中特殊的对象,是以0,1,2,3······为key值的对象
{'0':3,'1':2} 数组
let arr=[];
typeof(arr) //object
当然这种对象是有意义的,很多时候用数组解决问题会比用对象解决问题简单,但是要注意JavaScript中的数组本质是对象,很多现象都能用这个本质来解释
- JavaScript中和其他语言中的数组一样,用[]加下标来表示一个元素,用[]和用,分隔的值创建。不同的是,因为他是对象,并不会限制各个元素的类型是否一样,也不会限制元素的类型
let arr=['1',3,'shfs',{name:aa}];
- 数组和对象的区别有很多,其中一个就是length属性,他表示的是数组最后一项的下标加1,需要注意的是,他不像其他语言一样表示数组的长度,因为数组是一个对象,所以其中中间的值可以是空的,即该对象字面量不存在,当数组的某一项为空时,他将返回undefinded,我们可以手动设置length的值,只要给length-1赋值就行了(这里并不会出错,因为这样赋值就是新创建了一个对象字面量,也就是说JavaScript中数组并没有上限)
arr[8]=9; // length值为9
这里有一个问题就是当我们删除数组中的一项的时候,这一项并不会空出来,而是没有了 ,因为我们只是删除了一个对象字面量,可以用delete删除
- 因为数组是对象,所以他也继承了对象的方法(比如说for in 遍历),他自身也有许多方法(for each遍历),我们甚至可以添加方法,就像对象一样
arr.get=function(){}
我们可以用数组的一些特性区分数组和对象,比如length属性,原型为Array,以及一些数组上的特定方法