首页 > 解决方案 > 有没有办法从 javascript 类声明中反映公共实例类字段?

问题描述

ecmascript 候选规范允许声明类字段,例如:

class A {
    foo;
}

或者像赋值一样:

class A {
    foo = 'abc';
}

MDN 上的公共实例字段规范

有没有办法以类似的方式反映类声明中声明的字段名称(和分配的值)列表?:

class B {
    foo = 'abc';
    boo() {}
}
Object.getOwnPropertyNames(B.prototype) // => ["constructor", "boo"]

标签: javascriptecmascript-nextclass-fields

解决方案


根据我的搜索,您必须创建类本身的实例才能访问范围内变量的值。

因此,如果您执行以下操作,您始终可以列出构造函数的默认值:

class B {
    foo = 'abc';
    boo() {}
}
Object.getOwnPropertyNames(new B) // => ["foo"]

希望这有助于解决您的问题


推荐阅读