1. 数组是一种特殊的对象,键名是默认的, 1,2,3,所以定义数组的时候会省略。
2. 对象的键名一律为字符串,数组的键名会被自动转换为字符串。
3. 对象可以用点方法读取,也可以用方括号的方法读取,但是数组只能用方括号的方法读取。
4. keys是一种类数组对象,只有数组的length一种属性,还是自己定义的。类数组对象常见的有:arguments 对象,DOM元素集,字符串等
var keys = { 0: ['1', '2', '3'], 1: ['4', '5', '6'], length: 2 }
slice方法可以将类数组对象转换成数组
var arr = Array.prototype.slice.call('arrayLike')
5. 遍历数组的方法有两种,for循环和forEach方法,还有while循环(想想逆向遍历)
forEach方法:
Array.prototype.forEach.call( arguments, function( elem, i ){ console.log( i + '.' + elem ); } )
字符串是一种类数组对象,可以用这种方法遍历。
6. in运算符
检查某个键名是否存在的运算符,适用于对象,也适用于数组。注意是键名不是值。
键名是数值的数组,会被转换成字符串。
for in 不仅会遍历数组的数字键值,也会遍历数组的非数字键值,所以不建议用这种方法遍历数组(在这里要想到length,length的定义是数组中最大数字键值加1)。
7. 数组的空位打出来的是undefined,不影响length属性,使用delete方法删除数组的元素会出现这种空位的现象,所以使用length方法遍历数组的时候要小心。空位和undefined是不一样的,如果是空位,使用forEach方法,for in结构以及Object.keys方法进行遍历就会跳过空位。如果是undefined,遍历不会跳过。