You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:44:25