Iterating over object properties:
// Thing own/inherited? enumerable? string/symbol-keyed? return type notes
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//
Object.keys() // own, enumerable, string-keyed string[]
Object.getOwnPropertyNames() // own, enumerable OR not, string-keyed string[]
Object.getOwnPropertySymbols() // own, enumerable OR not, symbol-keyed Symbol[]
Reflect.ownKeys() // own, enumerable OR not, string-keyed (string|Symbol)[] equivalent to concatenating the above two
Object.getOwnPropertyDescriptors() // own, enumerable OR not, string- or symbol-keyed {identifier1: description, ...}
for...in // own AND inherited, enumerable, string-keyed n/a
back