私有方法
本课属于 Coddy JavaScript 学习旅程的“面向对象编程”单元。第 19 课,共 56 课。
JavaScript 类中的私有方法可以隐藏实现细节,并防止外部访问内部功能。
从 ES2022 开始,可以使用 # 前缀定义私有方法:
class Counter {
#count = 0;
// 创建一个私有方法
#increment() {
this.#count++;
}
// 使用私有方法的公共方法
addOne() {
this.#increment();
return this.#count;
}
}我们来创建一个 Counter 实例:
const myCounter = new Counter();我们可以调用公有方法:
console.log(myCounter.addOne()); // 输出:1但是,直接尝试访问私有方法会导致错误:
myCounter.#increment(); // 错误:无法在类外访问私有方法私有方法通过隐藏内部实现细节,帮助维护封装性。
挑战
你会得到一个用于存储消息的 MessageBox 类。你的任务是添加一个名为 #isValidMessage(text) 的私有方法,用来验证消息。它应该:
- 如果文本不为空且长度少于 100 个字符,则返回
true - 否则返回
false
亲手试试
import { MessageBox } from './messageBox.js';
// 使用消息框
const box = new MessageBox();
console.log(box.setMessage("Hello")); // "Message set!"(使用 #isValidMessage)
console.log(box.setMessage("")); // "Invalid message!"(使用 #isValidMessage)
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
面向对象编程中的所有课
8整理 OOP 代码
将类组织到模块中自己练习: JavaScript 在线编译器