- Objective: - Breadcrumb: # 概念阐释 ## 语义 在JavaScript中,可枚举(enumerable)和不可枚举(non-enumerable)是用来描述对象属性的特性之一。可枚举属性是可以通过对象属性遍历方法访问到属性。不可枚举属性不能,这些属性不会出现在遍历结果中。 # 实例 **可枚举:** - [[js objects forin loop 遍历获取对象属性]] - [[js objects 标准内置对象 Object.keys()]] **不可枚举:** ```js // 创建一个空对象 const obj = {}; // 使用 Object.defineProperty 方法定义一个不可枚举的属性 Object.defineProperty(obj, 'myProperty', { value: 42, enumerable: false }); // 使用 Object.keys 方法来获取对象的所有可枚举属性 const enumerableProps = Object.keys(obj); console.log(enumerableProps); // 输出:[],因为没有可枚举的属性 // 使用 Reflect.ownKeys 方法来获取对象的所有属性,包括不可枚举属性 const allProps = Reflect.ownKeys(obj); console.log(allProps); // 输出:['myProperty'] ``` # 相关内容 **为什么中文叫做枚举?** "枚举"一词源自于古代军事用语,最初用来指代对士兵、武器或其他物品进行清点和列举。在计算机科学中,这个词被引申为指代对一组项目进行逐个检查或列举的过程。在JavaScript中,可枚举属性是指可以被逐个列举出来的对象属性。 # 参考资料 - [属性的可枚举性和所有权](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Enumerability_and_ownership_of_properties#traversing_object_properties)