Menu
CoddyTech

私有方法

本课属于 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(); // 错误:无法在类外访问私有方法

私有方法通过隐藏内部实现细节,帮助维护封装性。

challenge icon

挑战

你会得到一个用于存储消息的 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)
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

面向对象编程中的所有课

自己练习: JavaScript 在线编译器