Enhance Object
with getAllPropertyNames
and getNPropertyNames
Simply require/import enhance-object-property-names-getters
from npm/yarn
After requiring/importing, Object
will have new configurable descriptors:
Object.getOwnPropertyNames(document); // ['location'] (length:1)
Object.getNPropertyNames(document, 0); // [] (length:0)
Object.getNPropertyNames(document, 1); // ['location'] (length:1)
Object.getNPropertyNames(document, 2); // ['location', 'constructor'] (length:2)
Object.getNPropertyNames(document, 3); // ['location', 'constructor', ...] (length:235)
Object.getAllPropertyNames(document); // ['location', 'constructor', ...] (length:299)
You can also pass to both a final boolean argument to either use or avoid caching of properties (default:true)
Object.getOwnPropertyNames
gives you the own props of an object, sometimes you might want more properties that are inherited as part of the prototype chain. You can ask for all properties using getAllPropertyNames
by climbing up the chain to the final root, or climb only a fixed amount of levels using getNPropertyNames
.