Поиск всех объектов, где foo.prototype instanceof bar - PullRequest
0 голосов
/ 08 мая 2018

Как я могу получить список всех конструкторов, чьи прототипы являются экземплярами объекта (например, Error.prototype instanceof Object && EvalError.prototype instanceof Object)? То, что я хочу, это что-то вроде:

> inheritors(Object)

[Function, Array, Number, Boolean, String, Symbol, Date, Promise, RegExp, Error, EvalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError, ArrayBuffer, Uint8Array, Int8Array, Uint16Array, Int16Array, Uint32Array, Int32Array, Float32Array, Float64Array, Uint8ClampedArray, DataView, Map, Set, WeakMap, WeakSet, ...]

Единственное решение, которое я могу придумать, - это (стараться не рвать):

function inheritors(fn){
    return Object
      .getOwnPropertyNames(global) //use `window` if you're testing it outside of node.js
      .filter(x=>x&&global[x].prototype instanceof fn)
}

Ет. (Он также не обнаруживает несколько вещей, таких как foo.Bar)

Буду благодарен за решение.

...