Reflect.ownKeys()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.
TheReflect.ownKeys() static method returns an array of thetarget object's own property keys.
In this article
Try it
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"]Syntax
Reflect.ownKeys(target)Parameters
targetThe target object from which to get the own keys.
Return value
AnArray of thetarget object's own property keys, including strings and symbols. For most objects, the array will be in the order of:
- Non-negative integer indexes in increasing numeric order (but as strings)
- Other string keys in the order of property creation
- Symbol keys in the order of property creation.
Exceptions
TypeErrorThrown if
targetis not an object.
Description
Reflect.ownKeys() provides the reflective semantic of retrieving all property keys of an object. It is the only way to get all own properties – enumerable and not enumerable, strings and symbols — in one call, without extra filtering logic. For example,Object.getOwnPropertyNames() takes the return value ofReflect.ownKeys() and filters to only string values, whileObject.getOwnPropertySymbols() filters to only symbol values. Because normal objects implement[[OwnPropertyKeys]] to return all string keys before symbol keys,Reflect.ownKeys(target) is usually equivalent toObject.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target)). However, if the object has a custom[[OwnPropertyKeys]] method (such as through a proxy'sownKeys handler), the order of the keys may be different.
Reflect.ownKeys() invokes the[[OwnPropertyKeys]]object internal method oftarget.
Examples
>Using 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 orderSpecifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-reflect.ownkeys> |