0Pricing
JavaScript Academy · 课时

类字段、私有 # 字段与静态成员

创建带有公共字段的类,使用私有 # 字段隐藏数据,并添加静态属性和方法

类字段、私有 # 字段与静态成员 是 CoddyKit 上的免费 JavaScript Academy 课时。 这是第 1 节课,共 3 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 JavaScript Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 JavaScript Academy 课程共包含 3 节课。

为什么使用类

目标:构建小巧而清晰的类。

  • 公开字段和方法
  • 使用 #private 字段隐藏状态
  • 使用 static 属性和方法提供类级辅助功能
  • 让示例保持简短易读
类字段、私有 # 字段与静态成员 — 插图 1

公开字段与构造函数

创建一个包含公开字段和简短方法的类;对于初学者,让逻辑保持简单。

// Public fields and a simple method
class Counter {
  // public field with default
  value = 0;

  constructor(start) {
    // use a default if start is not provided
    this.value = Number.isFinite(start) ? start : 0;
  }

  inc() {
    this.value = this.value + 1;
  }
}

const c1 = new Counter(2);
c1.inc();
console.log("value:", c1.value); // 3
类字段、私有 # 字段与静态成员 — 插图 2

私有 # 字段

#private 字段由语言强制执行,只能在类体内部使用。如有需要,请提供读取方法。

// Private # fields hide internal state
class SafeCounter {
  // private field (only inside the class)
  #value = 0;

  constructor(start) {
    this.#value = Number.isFinite(start) ? start : 0;
  }

  inc() { this.#value = this.#value + 1; }
  getValue() { return this.#value; } // expose via method
}

const sc = new SafeCounter(5);
sc.inc();
console.log("safe value:", sc.getValue());

// External access fails (uncommenting the next line would throw):
// console.log(sc.#value);
类字段、私有 # 字段与静态成员 — 插图 3

使用获取器安全读取

获取器可以返回经过派生或验证的值,同时保持字段私有。

// Getters provide read-only views; simple guard logic
class User {
  #name = "Anonymous";
  constructor(name) {
    if (typeof name === "string" && name.trim().length > 0) {
      this.#name = name.trim();
    }
  }
  get name() {
    return this.#name;
  }
}

const u = new User(" Ayla ");
console.log("name:", u.name);
类字段、私有 # 字段与静态成员 — 插图 4

静态成员

static 成员通过类调用(例如 MathHelp.circleArea()),而不是通过实例调用。

// Static = belongs to the class, not to instances
class MathHelp {
  static PI = 3.14159;
  static circleArea(r) {
    if (!(typeof r === "number" && r >= 0)) return 0;
    return MathHelp.PI * r * r;
  }
}

console.log("PI:", MathHelp.PI);
console.log("area r=2:", MathHelp.circleArea(2));

// Instances do not have the static members:
const mh = new MathHelp();
console.log("instance has PI?", "PI" in mh); // false
类字段、私有 # 字段与静态成员 — 插图 5

适合初学者的习惯

提示:

  • 优先使用包含少量清晰方法的小型类。
  • 使用 #private 实现真正的私有性;下划线只是命名约定。
  • 将常量和实用工具放在 static 成员上。
  • 如果需要从外部访问,只公开最少的读取方法(获取器)。
类字段、私有 # 字段与静态成员 — 插图 6

私有字段基础测验

快速检查:#private 字段。

类字段、私有 # 字段与静态成员 — 插图 7

回顾

回顾:使用公开字段表示简单状态,使用 #private 隐藏内部实现,使用 static 提供类级辅助功能。让每个类都保持小巧易读。

类字段、私有 # 字段与静态成员 — 插图 8

常见问题解答

「类字段、私有 # 字段与静态成员」课时是免费的吗?

是的 — 「类字段、私有 # 字段与静态成员」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 JavaScript Academy 课程的其余内容,请升级到 CoddyKit PRO。 JavaScript Academy 课程共包含 3 节课。

「类字段、私有 # 字段与静态成员」这节课中我会学到什么?

创建带有公共字段的类,使用私有 # 字段隐藏数据,并添加静态属性和方法 你通过在浏览器中直接运行的动手代码来练习 JavaScript Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 JavaScript Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 JavaScript Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 3 节。

「类字段、私有 # 字段与静态成员」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 JavaScript Academy 课中编写并运行代码吗?

能。每节 JavaScript Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 类字段、私有 # 字段与静态成员
  2. 继承、super,以及何时优先使用组合
  3. 混入(浅尝)——无需深层继承体系的简单复用
← 返回 JavaScript Academy