假设我有一个类,它有一个公共属性,只有一个get
访问器,我希望能够通过对象键循环来处理对象。
class Foo {
get bar() {
return 'barval';
}
}
为什么当我调用Object.keys(...)
(或类似的函数)或循环通过对象中的键时bar
不可见?foo.bar
在请求时成功返回barval
,但当我期望Object.keys(foo)
返回["bar"]
时,它返回了一个空数组。这是为什么?
示例输出:
const foo = new Foo();
console.log(foo.bar, // barval
Object.keys(foo), // []
Object.entries(foo), // []
Object.values(foo)); // []
for (let key in foo)
console.log(key, foo[key]); // Never reached
2条答案
按热度按时间44u64gxh1#
类getter和setter不是类示例的属性,因此它们在
keys
、entries
或values
中不可用。它们是对象原型的成员,你可以遍历原型,去掉
constructor
之类的,只留下你在类中声明的那些。据我所知,唯一的办法就是:
退货:
avwztpqn2#
您可以改用
Object.getOwnPropertyDescriptors
。