本文介绍了如何枚举私有JavaScript类字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何枚举私有类字段?
class Person {
#isFoo = true;
#isBar = false;
constructor(first, last) {
this.firstName = first;
this.lastName = last;
}
enumerateSelf() {
console.log(this);
// (pub/priv fields shown)
// enumerate through instance fields
for (let key in this) {
console.log(key)
// (only public fields shown)
}
// How do we enumerate/loop through private fields too?
}
}
new Person('J', 'Doe').enumerateSelf();
推荐答案
不可能。它们是私有字段,并且没有枚举方法。只有类声明静态地知道声明了哪些类。它们不是属性,甚至没有代表私有名称的语言值,您cannot access them dynamically(like with bracket notation)。
您最多只能得到
enumerateSelf() {
console.log(this);
for (let key in this) {
console.log("public", key, this[key]);
}
console.log("private isFoo", this.#isFoo);
console.log("private isBar", this.#isBar);
}
私有字段提案中有关于";私有字段迭代";的an open issue,但是TC39成员国&私有字段的首批评论之一不是属性。你不能刻意去思考它们。&q;。
这篇关于如何枚举私有JavaScript类字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!