如何获取JavaScript类的自有静态属性值列表?
如何获取JavaScript类中所有静态属性的值列表
嘿,我来帮你搞定这个需求!要提取TimeRange类里所有自定义静态属性的值,其实有几种简洁的方法,这里给你分享最实用的两种:
方法一:直接用Object.values()(最简便)
因为类的静态属性其实是挂载在类的构造函数对象上的,所以直接调用Object.values()就能拿到所有可枚举静态属性的值数组,完全匹配你的需求:
class TimeRange { static ALL = 'all time' static MONTH = 'month' static WEEK = 'week' static DAY = 'day' } const staticValues = Object.values(TimeRange); console.log(staticValues); // 输出:['all time', 'month', 'week', 'day']
这个方法的好处是简单直接,只要你的类没有继承其他带静态属性的父类,就完全适用。
方法二:过滤内置属性(更严谨)
如果你的类可能继承了其他类,或者担心类作为函数自带的length、name、prototype这些内置属性被混入结果,可以用Object.getOwnPropertyNames()配合过滤和映射:
const staticValues = Object.getOwnPropertyNames(TimeRange) // 过滤掉类自带的内置属性 .filter(prop => !['length', 'name', 'prototype'].includes(prop)) // 映射成对应的属性值 .map(prop => TimeRange[prop]); console.log(staticValues); // 同样输出:['all time', 'month', 'week', 'day']
这种方法更严谨,能确保只拿到你自己定义的静态属性值。
总结
在你的示例场景下,第一种方法Object.values()就足够好用了,代码少还能直接得到你想要的结果。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

