Movatterモバイル変換


[0]ホーム

URL:


  1. 面向开发者的 Web 技术
  2. JavaScript
  3. JavaScript 参考
  4. JavaScript 标准内置对象
  5. Object
  6. Object.keys()

此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in EnglishAlways switch to English

Object.keys()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨2015年7月⁩.

Object.keys() 静态方法返回一个由给定对象自身的可枚举的字符串键属性名组成的数组。

尝试一下

const object1 = {  a: "somestring",  b: 42,  c: false,};console.log(Object.keys(object1));// Expected output: Array ["a", "b", "c"]

语法

js
Object.keys(obj)

参数

obj

一个对象。

返回值

一个由给定对象自身可枚举的字符串键属性键组成的数组。

描述

Object.keys() 返回一个数组,其元素是字符串,对应于直接在对象上找到的可枚举的字符串键属性名。这与使用for...in 循环迭代相同,只是for...in 循环还会枚举原型链中的属性。Object.keys() 返回的数组顺序和与for...in 循环提供的顺序相同。

如果你需要属性的值,请使用Object.values()。如果你同时需要属性的键和值,请使用Object.entries()

示例

使用 Object.keys()

js
// 简单数组const arr = ["a", "b", "c"];console.log(Object.keys(arr)); // ['0', '1', '2']// 类数组对象const obj = { 0: "a", 1: "b", 2: "c" };console.log(Object.keys(obj)); // ['0', '1', '2']// 键的顺序随机的类数组对象const anObj = { 100: "a", 2: "b", 7: "c" };console.log(Object.keys(anObj)); // ['2', '7', '100']// getFoo 是一个不可枚举的属性const myObj = Object.create(  {},  {    getFoo: {      value() {        return this.foo;      },    },  },);myObj.foo = 1;console.log(Object.keys(myObj)); // ['foo']

如果你想要所有以字符串为键的自有属性,包括不可枚举的属性,参见Object.getOwnPropertyNames()

在基本类型中使用 Object.keys()

非对象参数会强制转换为对象undefinednull 不能被强制转换为对象,会立即抛出TypeError。只有字符串可以有自己的可枚举属性,而其他所有基本类型都返回一个空数组。

js
// 字符串具有索引作为可枚举的自有属性console.log(Object.keys("foo")); // ['0', '1', '2']// 其他基本类型(除了 undefined 和 null)没有自有属性console.log(Object.keys(100)); // []

备注:在 ES5 中,将一个非对象传递给Object.keys() 会抛出一个TypeError

规范

Specification
ECMAScript® 2026 Language Specification
# sec-object.keys

浏览器兼容性

参见

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp