数组与对象
数组
JavaScript数组就是对象,每个数组都有一个length属性。
区别与使用
- 数组使用整数作为属性名,对象随意。
- 当属性名是小而连续的整数时,应该使用数组,否则使用对象。
区分数组和对象
/*
* 《JavaScript语言精粹》 P60例子
*/
var is_array = function(value) {
return value && typeof value ==='object' && value.constructor === Array;
}
var is_array = function(value) {
return Object.prototype.toString.apply(value) === '[Object Array]';
}
for ... in与 for ... of遍历
for ... in
枚举一个对象的所有属性名(或键名),在每次循环中,object的下一个属性名字符串被赋值给variable。
- 可用来遍历数组,遍历时无法保证属性的顺序。
- 可用来遍历对象的所有属性的名字,也会遍历出所有从原型链中继承而来的成员属性。
for ... of
ES6规范,可遍历所有部署了Symbol.iterator属性的所有数据结构。用法与for ... in类似
区别
- for ... in 循环对象读取键名,for ... of 读取键值。
- 遍历数组时,for ... of 值返回具有数字索引的属性,for ... in返回全部属性。
/*
* 《ES6标准入门》 P176例子
*/
let arr = [3, 5, 7];
arr.foo = 'hello';
for (let i in arr) {
console.log(i); //"0", "1", "2", "foo"
}
for (let in in arr) {
console.log(i); //"3", "5", "7"
}
网友评论