Spec-Zone.ru › JavaScript

Object.keys()

Базовая широкая доступность

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

Статический метод Object.keys() возвращает массив собственных перечисляемых строковых ключей свойств данного объекта.

Попробуйте

const object = {
  a: "some string",
  b: 42,
  c: false,
};

console.log(Object.keys(object));
// Expected output: Array ["a", "b", "c"]

Синтаксис

Object.keys(obj)

Параметры

obj
Объект.

Возвращаемое значение

Массив строк, представляющих собственные перечисляемые строковые ключи свойств данного объекта.

Описание

Object.keys() возвращает массив, элементы которого являются строками, соответствующими именам перечисляемых строковых ключей свойств, найденных непосредственно в object. Это аналогично итерации с помощью цикла for...in, за исключением того, что цикл for...in перебирает свойства в цепочке прототипов. Порядок массива, возвращаемого Object.keys(), совпадает с порядком, предоставляемым циклом for...in.

Если вам нужны значения свойств, вместо этого используйте Object.values(). Если вам нужны как ключи, так и значения свойств, вместо этого используйте Object.entries().

Примеры

Использование Object.keys()

// Basic array
const arr = ["a", "b", "c"];
console.log(Object.keys(arr)); // ['0', '1', '2']

// Array-like object
const obj = { 0: "a", 1: "b", 2: "c" };
console.log(Object.keys(obj)); // ['0', '1', '2']

// Array-like object with random key ordering
const anObj = { 100: "a", 2: "b", 7: "c" };
console.log(Object.keys(anObj)); // ['2', '7', '100']

// getFoo is a non-enumerable property
const myObj = Object.create(
  {},
  {
    getFoo: {
      value() {
        return this.foo;
      },
    },
  },
);
myObj.foo = 1;
console.log(Object.keys(myObj)); // ['foo']

Если вам нужны *все* собственные строковые свойства, включая неперечисляемые, см. Object.getOwnPropertyNames().

Использование Object.keys() на примитивах

Аргументы, не являющиеся объектами, преобразуются в объекты. undefined и null не могут быть преобразованы в объекты и немедленно вызывают TypeError. Только строки могут иметь собственные перечисляемые свойства, в то время как все остальные примитивы возвращают пустой массив.

// Strings have indices as enumerable own properties
console.log(Object.keys("foo")); // ['0', '1', '2']

// Other primitives except undefined and null have no own properties
console.log(Object.keys(100)); // []

Примечание: В ES5 передача не-объекта в Object.keys() вызывала TypeError.

Спецификации

Спецификация
Спецификация языка ECMAScript® 2027
# sec-object.keys

Совместимость с браузерами

Настольные компьютеры Мобильные устройства Сервер
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
keys
5
12
4
12
5
18
4
12
5
1.0
4.4
5
1.0.0
1.0
0.10.0

См. также

  • Polyfill для Object.keys в core-js
  • Polyfill Object.keys от es-shims
  • Перечисляемость и владение свойствами
  • Object.entries()
  • Object.values()
  • Object.prototype.propertyIsEnumerable()
  • Object.create()
  • Object.getOwnPropertyNames()
  • Map.prototype.keys()

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API