← Назад к вопросам

Как получить ключи объекта в JavaScript?

2.0 Middle🔥 171 комментариев
#JavaScript Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Получение ключей объекта в JavaScript

Есть несколько способов получить ключи объекта.

Object.keys() — основной способ

const user = {
  name: 'Иван',
  age: 30,
  email: 'ivan@example.com'
};

const keys = Object.keys(user);
console.log(keys); // ['name', 'age', 'email']

// Итерирование
keys.forEach(key => {
  console.log(`${key}: ${user[key]}`);
});

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

Object.getOwnPropertyNames()

const obj = {};
Object.defineProperty(obj, 'hidden', {
  value: 'скрыто',
  enumerable: false
});
obj.visible = 'видно';

console.log(Object.keys(obj)); // ['visible']
console.log(Object.getOwnPropertyNames(obj)); // ['hidden', 'visible']

Возвращает ВСЕ собственные свойства, включая неперечисляемые.

for...in цикл

const parent = { parentKey: 'значение' };
const child = Object.create(parent);
child.ownKey = 'собственное значение';

for (let key in child) {
  console.log(key); // ownKey, parentKey
}

// Только собственные
for (let key in child) {
  if (child.hasOwnProperty(key)) {
    console.log(key); // ownKey
  }
}

Итерирует по всем перечисляемым свойствам, включая унаследованные.

Reflect.ownKeys()

const sym = Symbol('символ');
const obj = {
  name: 'Иван',
  [sym]: 'значение символа'
};

Object.defineProperty(obj, 'hidden', {
  value: 'скрыто',
  enumerable: false
});

console.log(Object.keys(obj)); // ['name']
console.log(Reflect.ownKeys(obj)); // ['name', 'hidden', Symbol(символ)]

Возвращает все ключи, включая символы и неперечисляемые свойства.

Object.entries()

const user = {
  name: 'Анна',
  city: 'Москва',
  age: 28
};

for (const [key, value] of Object.entries(user)) {
  console.log(`${key}: ${value}`);
}

Получить ключи и значения одновременно.

Object.getOwnPropertySymbols()

const sym1 = Symbol('sym1');
const sym2 = Symbol('sym2');

const obj = {
  name: 'данные',
  [sym1]: 'значение 1',
  [sym2]: 'значение 2'
};

const symbols = Object.getOwnPropertySymbols(obj);
console.log(symbols); // [Symbol(sym1), Symbol(sym2)]

Получить только символьные ключи объекта.

Сравнение методов

МетодПеречисляемыеНеперечисляемыеУнаследованныеСимволы
Object.keys()
Object.getOwnPropertyNames()
for...in
Reflect.ownKeys()

Рекомендации

✅ Используй Object.keys() в 99% случаев для простых объектов ✅ Используй Object.entries() когда нужны ключи и значения одновременно ✅ Используй for...in для итерирования со своими свойствами ❌ Избегай for...in для массивов (используй for...of или forEach)

Object.keys() — это самый распространенный способ получить ключи объекта.