假设我有这个类(我使用它像enum):
class Color { static get Red() { return 0; } static get Black() { return 1; } }
有没有类似于Object.keys来获得[‘Red’,’Black’]?
我正在使用Node.js v6.5.0,这意味着某些功能可能会丢失.
解决方法
使用
Object.getOwnPropertyDescriptors()
并过滤结果以仅包含具有getter的属性:
class Color { static get Red() { return 0; } static get Black() { return 1; } } const getters = Object.entries(Object.getOwnPropertyDescriptors(Color)) .filter(([key,descriptor]) => typeof descriptor.get === 'function') .map(([key]) => key) console.log(getters)
您也可以尝试这种方法 – 它应该在Node.js 6.5.0中工作.
class Color { static get Red() { return 0; } static get Black() { return 1; } } const getters = Object.getOwnPropertyNames(Color) .map(key => [key,Object.getOwnPropertyDescriptor(Color,key)]) .filter(([key,descriptor]) => typeof descriptor.get === 'function') .map(([key]) => key) console.log(getters)