摘要: 本教程将介绍 JavaScript 对象的可枚举属性。
JavaScript 可枚举属性简介
可枚举属性可以使用 for...in 循环或 Objects.keys() 方法进行迭代。
在 JavaScript 中,对象 是一个无序的键值对列表。键通常是 字符串 或 符号。值可以是任何基本类型的值(字符串、布尔值、数字、未定义或空值)、对象或 函数。
以下示例使用 对象字面量语法 创建一个新对象
const person = {
firstName: 'John',
lastName: 'Doe
};Code language: PHP (php)person 对象有两个属性:firstName 和 lastName。
对象属性具有多个内部属性,包括 value、writable、enumerable 和 configurable。有关更多详细信息,请参见 对象属性。
enumerable 属性决定使用 for...in 循环或 Object.keys() 方法枚举对象属性时,属性是否可访问。
默认情况下,通过简单赋值或属性初始化器创建的所有属性都是可枚举的。例如
const person = {
firstName: 'John',
lastName: 'Doe'
};
person.age = 25;
for (const key in person) {
console.log(key);
}
Code language: JavaScript (javascript)输出
firstName
lastName
age在此示例中
firstName和lastName是可枚举属性,因为它们是通过属性初始化器创建的。age属性也是可枚举的,因为它通过简单赋值创建。
要更改属性的内部 enumerable 属性,请使用 Object.defineProperty() 方法。例如
const person = {
firstName: 'John',
lastName: 'Doe'
};
person.age = 25;
Object.defineProperty(person, 'ssn', {
enumerable: false,
value: '123-456-7890'
});
for (const key in person) {
console.log(key);
}
Code language: JavaScript (javascript)输出
firstName
lastName
age
在此示例中,ssn 属性是在 enumerable 标志设置为 false 的情况下创建的,因此它不会显示在 for...in 循环中。
ES6 提供了一个方法 propertyIsEnumerable(),用于确定属性是否可枚举。如果属性可枚举,则返回 true;否则返回 false。例如
const person = {
firstName: 'John',
lastName: 'Doe'
};
person.age = 25;
Object.defineProperty(person, 'ssn', {
enumerable: false,
value: '123-456-7890'
});
console.log(person.propertyIsEnumerable('firstName')); // => true
console.log(person.propertyIsEnumerable('lastName')); // => true
console.log(person.propertyIsEnumerable('age')); // => true
console.log(person.propertyIsEnumerable('ssn')); // => false
Code language: JavaScript (javascript)总结
- 如果属性的
enumerable属性设置为true,则该属性是可枚举的。obj.propertyIsEnumerable()用于确定属性是否可枚举。 - 通过简单赋值或属性初始化器创建的属性是可枚举的。
本教程对您有帮助吗?