与数组一样,在JavaScript中对象也是一种容器(也称作聚合或复杂数据类型)
对象和数组的两个主要区别是:
数组包含值,使用数组做索引;而对象包含属性,使用字符串和符号作为索引
数组是有序的(arr[0]始终在arr[1]之前);而对象是无需的(无法保证obj.a在obj.b之前)
属性枚举:
枚举:列举容器的内容
PS:对象属性枚举是无序的
1. for....in
for...in 是枚举对象属性的传统方式
const SYM = Symbol();
const o = {a:1,b:2,c:3,[SYM]:4};
for(let prop in o){
if(!o.hasOwnProperty(prop)) continue;
console.log('${prop}:${o[prop]');
}
2. Object.keys
Objcet.keys提供了一种方式用来获取对象章所有可枚举的字符串属性,并将结果封装成一个数组
const SYM = Symbol();
const o = {a:1,b:2,c:3,[SYM]:4};
Object.keys(o).forEach(prop => console.log('${prop}:${o[prop]'));
当需要一个由对象中所有属性的键组成的数组时,使用它就会很方便