@Dale-Lin
2022-03-08T15:22:31.000000Z
字数 559
阅读 348
深入理解ES6
Class 中的属性默认是 public 的,可以被 class 外部访问和修改。一个 Stage 3 提案允许 class 拥有以 #
开头的 private 属性/方法。
私有属性只能在类的最开始声明,只能被实例方法(包括 constructor)访问。
class ClassWithPrivate {
#privateField = 'private field';
sayPrivateField() {
console.log(this.#privateField)
}
// static 属性只能被 static 方法访问
static #privateStaticField = 'private static';
static sayPrivateStaticField() {
console.log(this.#privateStaticField)
}
}
const a = new ClassWithPrivate()
a.#privateField // throw Error
a.sayPrivateField() // 'private field'
ClassWithPrivate.#privateStaticField // throw Error
ClassWithPrivate.sayPrivateStaticField() // 'private static'