找回密码
 立即注册
搜索
查看: 23|回复: 0

遍历JS对象所有属性键 转自马黑教程专版

[复制链接]

1526

主题

3231

回帖

1万

积分

管理员

积分
13039
发表于 昨天 21:52 | 显示全部楼层 |阅读模式

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() 方法无疑是简洁高效的。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

协同嘉业科技有限公司 ( 京ICP备2024053108号-1 )

GMT+8, 2026-8-20 20:21 , Processed in 0.086841 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表