Spec-Zone.ru › JavaScript

Reflect.ownKeys()

Базовый уровень Широко доступно

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

Статический метод Reflect.ownKeys() возвращает массив собственных ключей свойств объекта target.

Попробуйте

const object = {
  property1: 42,
  property2: 13,
};

const array = [];

console.log(Reflect.ownKeys(object));
// Expected output: Array ["property1", "property2"]

console.log(Reflect.ownKeys(array));
// Expected output: Array ["length"]

Синтаксис

Reflect.ownKeys(target)

Параметры

target
Целевой объект, из которого необходимо получить собственные ключи.

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

Array собственных ключей свойств объекта target, включая строки и символы. Для большинства объектов массив будет в следующем порядке:

  1. Неотрицательные целочисленные индексы в порядке возрастания (но как строки)
  2. Другие строковые ключи в порядке создания свойства
  3. Символьные ключи в порядке создания свойства.

Исключения

TypeError
Выбрасывается, если target не является объектом.

Описание

Reflect.ownKeys() обеспечивает рефлексивную семантику получения всех ключей свойств объекта. Это единственный способ получить все собственные свойства – перечисляемые и неперечисляемые, строки и символы — за один вызов, без дополнительной логики фильтрации. Например, Object.getOwnPropertyNames() принимает возвращаемое значение Reflect.ownKeys() и фильтрует его только для строковых значений, в то время как Object.getOwnPropertySymbols() фильтрует его только для символьных значений. Поскольку обычные объекты реализуют [[OwnPropertyKeys]] для возврата всех строковых ключей до символьных ключей, Reflect.ownKeys(target) обычно эквивалентен Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target)). Однако, если объект имеет пользовательский метод [[OwnPropertyKeys]] (например, через обработчик ownKeys прокси), порядок ключей может отличаться.

Reflect.ownKeys() вызывает внутренний метод объекта [[OwnPropertyKeys]] объекта target.

Примеры

Использование Reflect.ownKeys()

Reflect.ownKeys({ z: 3, y: 2, x: 1 }); // [ "z", "y", "x" ]
Reflect.ownKeys([]); // ["length"]

const sym = Symbol.for("comet");
const sym2 = Symbol.for("meteor");
const obj = {
  [sym]: 0,
  str: 0,
  773: 0,
  0: 0,
  [sym2]: 0,
  "-1": 0,
  8: 0,
  "second str": 0,
};
Reflect.ownKeys(obj);
// [ "0", "8", "773", "str", "-1", "second str", Symbol(comet), Symbol(meteor) ]
// Indexes in numeric order,
// strings in insertion order,
// symbols in insertion order

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

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

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

Десктопные Мобильные Серверные
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
ownKeys
49
12
42
36
10
49
42
36
10
5.0
49
10
1.0.0
1.0
6.0.0

Смотрите также

  • Полифил Reflect.ownKeys в core-js
  • es-shims полифил Reflect.ownKeys
  • Reflect
  • Object.getOwnPropertyNames()
  • Object.getOwnPropertySymbols()
  • handler.ownKeys()

© 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/Reflect/ownKeys

Spec-Zone.ru

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