Maybe we need a reflect API to iterate over instance members

Gray Zhang otakustay at
Sun May 31 11:42:41 UTC 2015

Since class’s members are non-enumerable by default (which is a good choice) we cannot use for .. in to iterate over all members of an instance, the same problem could exists in a plain object when we use Object.defineProperty API.

In real world there are some scenarios where we need to iterate over members, A common example is we need to find all set{SomeThing} methods so we can do an auto dependency injection.

Certainly we can write a 3rd-party function to find all members through prototype chain:

function getAllMembersKeys(obj) {
    let keys = [];
    while (obj) {
        obj = Object.getPrototypeOf(obj);
    return keys;
But it doesn’t look nice and lacks considerations of many things such as Symbol’d keys.

Look around other languages with reflection API, most of them would provide a method to iterate over all members / properties / methods of an instance, so why not we provide a set of utility API:


Best regards

Gray Zhang

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the es-discuss mailing list