javascript – 获取类中的所有静态getter

假设我有这个类(我使用它像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)

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...