如何让对象的不可枚举id属性在控制台打印时显示?
解决方案
要实现id属性不可枚举(for-in不遍历)但控制台打印可见的效果,直接用Object.defineProperty定义属性即可,主流浏览器控制台默认会展示对象的所有属性(包括不可枚举属性)。
示例代码
// 初始化基础对象 const user = { username: 'john_doe', score: 95 }; // 定义不可枚举的id属性 Object.defineProperty(user, 'id', { value: 123, enumerable: false, // 核心:设置为不可枚举 writable: true, // 可选:允许修改id值 configurable: true // 可选:允许删除或重新定义该属性 }); // 测试for-in循环 console.log('for-in遍历输出:'); for (const key in user) { console.log(key); // 仅输出 username、score } // 控制台打印对象 console.log('完整对象:', user);
关键说明
- 不可枚举特性:通过
enumerable: false标记属性后,for-in循环、Object.keys()、Object.values()都不会包含该属性,满足遍历需求。 - 控制台显示:Chrome、Firefox等主流浏览器的开发者工具默认会显示对象的所有自身属性(包括不可枚举属性),部分浏览器会将不可枚举属性显示为灰色;若未看到可右键对象,选择「Show non-enumerable properties」开启显示。
内容的提问来源于stack exchange,提问作者Hamza-Noah
相关产品推荐
相关产品推荐

