Как я могу получить список всех конструкторов, чьи прототипы являются экземплярами объекта (например, 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
)
Буду благодарен за решение.