请马上登录,朋友们都在花潮里等着你哦:)
您需要 登录 才可以下载或查看,没有账号?立即注册
x
JS对象有两种类型的属性键:字符串和符号。符号(symbol)是一个特殊的属性键类型,for...in 会跳过它们:
// 创建person对象
let person = {
name: '张三',
age: 26,
sex: '男',
};
let ID = Symbol('sId'); // 创建符号
person[ID] = 1025; // person对象加入符号键值对(符号需置入方括号内)
console.log(person[ID]); // -> 1025
// 使用for...in遍历person对象
for (let key in person) {
console.log(key); // -> name, age, sex
}
可以看到,for...in 跳过了符号 ID 属性键。要取出所有的对象属性键,得使用 JS 内置的静态方法 Reflect.ownKeys():
let person = {
name: '张三',
age: 26,
sex: '男',
};
let ID = Symbol('sId');
person[ID] = 1025;
// 使用Reflect.ownKeys()方法获取person对象所有属性键
const keys = Reflect.ownKeys(person);
console.log(keys);
// -> Array(4)
// -> 0: "name" 1: "age" 2: "sex" 3: Symbol(sId)
Reflect.ownKeys() 方法以数组形式返回属性键,其中,符号属性键是 Symbol('sId') 创建的符号,记作Symbol(sId)(创建时的名称 sId 去掉引号,而非声明的变量 ID,读取键值时则使用 ID 变量)。
获取对象的全部属性键对读取对象数据非常有帮助。如果不希望遗漏任何一个属性键及其对应的键值,Reflect.ownKeys() 方法无疑是简洁高效的。
|