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, включая строки и символы. Для большинства объектов массив будет в следующем порядке:
- Неотрицательные целочисленные индексы в порядке возрастания (но как строки)
- Другие строковые ключи в порядке создания свойства
- Символьные ключи в порядке создания свойства.
Исключения
-
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
Спецификации
Совместимость с браузерами
| Десктопные | Мобильные | Серверные | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 ReflectObject.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