ES6 class封装常用方式主要有以下3种,根据项目需求和技术栈选择:1. 公有封装默认定义的属性和方法均为公有,可直接通过实例访问:javascriptclass Person { constructor(name) { this.name = name // 公有属性 } greet() { // 公有方法 return `Hello, ${this.name}` }}const user = new Person('John')console.log(user.name) // 直接访问属性console.log(user.greet()) // 调用方法2. 私有封装(#语法)ES2022正式支持的私有成员方案,使用#前缀定义:javascriptclass BankAccount { #balance = 0 // 私有属性 constructor(initial) { this.#balance = initial } #validate(amount) { // 私有方法 return amount > 0 } deposit(amount) { if(this.#validate(amount)) { this.#balance += amount } return this.#balance }}const acc = new BankAccount(100)acc.deposit(50) // 正常操作// acc.#balance // 报错:私有成员不可外部访问3. WeakMap模拟私有兼容旧环境的替代方案,通过WeakMap存储私有数据:javascriptconst _data = new WeakMap()class User { constructor(name) { _data.set(this, { name: name, id: Math.random().toString(36).slice(2) }) } getProfile() { const {name, id} = _data.get(this) return {name, id} }}const u = new User('Alice')u.getProfile() // 获取包含私有数据的对象// _data.get(u) // 外部无法直接获取WeakMap中的数据选择建议:现代项目直接使用#语法作为标准方案,需兼容旧环境时可采用WeakMap方案,公有封装仅适用于无需保护数据的简单场景。