先上代码:
class Person {
#salary: number
constructor(salary: number, private name: string) {
this.#salary = salary
console.log(this.#salary) // 可以访问私有属性
console.log(this.name) // 可以访问公共属性
}
}
const person = new Person(1000, '张三');
// console.log(person.name); // 可以访问公共属性
console.log((person as any).name); // 可以访问公共属性
// console.log(person.#salary); // 报错,因为salary是私有的
看代码,两者区别很明显:
- #属性不能在构造函数中定义
- private属性,可通过as any强制获取,但#属性不行
#私密程度比private高