获取 class 中的所有静态 getter
Get all static getters in a class
假设我有这个 class(我像枚举一样使用它):
class Color {
static get Red() {
return 0;
}
static get Black() {
return 1;
}
}
有没有类似Object.keys
的东西可以得到['Red', 'Black']
?
我正在使用 Node.js v6.5.0,这意味着可能缺少某些功能。
使用 Object.getOwnPropertyDescriptors()
并过滤结果以仅包含具有吸气剂的属性:
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)
假设我有这个 class(我像枚举一样使用它):
class Color {
static get Red() {
return 0;
}
static get Black() {
return 1;
}
}
有没有类似Object.keys
的东西可以得到['Red', 'Black']
?
我正在使用 Node.js v6.5.0,这意味着可能缺少某些功能。
使用 Object.getOwnPropertyDescriptors()
并过滤结果以仅包含具有吸气剂的属性:
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)