如何获取原型为对象实例的所有构造函数的列表(例如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)
}
Ew的。 (它也没有检测到很多像foo.Bar
)
我很感激解决方案。