查找foo.prototype instanceof bar所在的所有对象

时间:2018-05-08 19:13:44

标签: javascript class inheritance prototype instance

如何获取原型为对象实例的所有构造函数的列表(例如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

这样的东西

我很感激解决方案。

0 个答案:

没有答案