在 JavaScript 中列出对象属性
-
在 JavaScript 中使用
for...in
循环列出对象的属性 -
使用 JavaScript 中的
Object.keys()
函数列出对象的属性 -
在 JavaScript 中使用
Object.getOwnPropertyNames()
列出对象的属性
JavaScript 提供了各种处理对象的方法,例如 Object.values()
和 Object.prototype.valueOf()
来处理对象值,Object.keys()
和 Object.prototype.hasOwnProperty()
使用对象键。
用户可以对对象键和属性执行任何操作。本教程解释了在 JavaScript 中使用 for...in
循环、Object.getOwnPropertyNames()
和 Object.keys()
函数列出对象属性。
在 JavaScript 中使用 for...in
循环列出对象的属性
要列出对象的属性,你可以使用 JavaScript 中的 for...in
循环。for...in
循环遍历对象的可枚举属性。
这些是 enumerable
标志设置为 true 的对象的属性。这包括继承的可枚举属性。但是,此循环忽略了 enumerable
标志设置为 false 的不可枚举属性。
例如,让我们创建一个具有三个属性的对象并使用 for...in
循环列出它。请参阅下面的代码。
语法:
for (variable in object) {
statement
}
该函数迭代 object
,并且每次迭代都为 variable
分配不同的属性名称。此方法仅从 object
中提取可枚举属性。
有关更多信息,请阅读有关 for...in
方法的更多信息。
const inputObject = {
id: 42,
name: 'John Doe',
address: {city: 'Mumbai', country: 'India'}
};
for (const property in inputObject) {
console.log(property);
}
在上面的示例代码块中,我们定义了对象的三个属性 - id
、name
和 address
。当你迭代 inputObject
时,inputObject
中的所有属性都会被检查。
上面代码块的输出将如下所示。
输出:
id
name
address
使用 JavaScript 中的 Object.keys()
函数列出对象的属性
这是 JavaScript 提供的一种内置方法,用于提取对象的属性或键。它迭代对象并返回一个可枚举属性的数组。
不可枚举属性是在循环中使用 Object.keys()
或 for ...in
传递相应对象时未出现在循环中的对象的属性。
语法:
Object.keys(object);
这个函数接受一个 object
作为输入,它是一个强制参数。此方法仅从 Object
中提取可枚举属性。
有关更多信息,请阅读有关 keys
方法的更多信息。
const inputObject = {
id: 42,
name: 'John Doe',
address: {city: 'Mumbai', country: 'India'}
};
Object.defineProperty(
inputObject, 'salary', {value: '30,000$', enumerable: false})
console.log(Object.keys(inputObject));
在前面的示例中,我们定义了对象 ID
、name
和 address
的三个属性。当你传递 inputObject
时,会检查 inputObject
的所有属性。
上面代码块的输出将如下所示。
输出:
["id", "name", "address"]
在 JavaScript 中使用 Object.getOwnPropertyNames()
列出对象的属性
这是 JavaScript 提供的一种内置方法,用于提取对象的属性或键。它迭代对象并返回一个属性数组,包括不可枚举的属性。
语法:
Object.getOwnPropertyNames(object);
此函数将强制参数 object
作为输入。此方法仅提取 Object
的可枚举和不可枚举属性,而不提取值。
有关更多信息,请阅读有关 getOwnPropertyNames
方法的更多信息。
getOwnPropertyNames()
和 Object.keys()
之间的主要区别在于 getOwnPropertyName()
返回可枚举和不可枚举的属性。而 Object.keys()
只返回可枚举的键。
可以使用 Object.defineProperty
创建不可枚举的属性。当属性初始化程序初始化属性时,enumerable
标志设置为 true
。
你可以使用 propertyIsEnumerable()
方法来检查对象是否包含可枚举或不可枚举的属性。
const inputObject = {
id: 42,
name: 'John Doe',
address: {city: 'Mumbai', country: 'India'}
};
Object.defineProperty(
inputObject, 'salary', {value: '30,000$', enumerable: false})
console.log(Object.getOwnPropertyNames(inputObject));
在前面的示例中,我们定义了对象 ID
、name
和 address
的三个属性。当你传递 inputObject
时,会检查 inputObject
的所有属性和不可枚举的属性。
上面代码块的输出将如下所示。
输出:
["id", "name", "address", "salary"]
Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.
LinkedIn