第 8 章 · 类

getter/setter 校验门

#age | 18
incoming value
21
等待 setter 检查 合法值会穿过门,写入私有字段。

getter 读取结果

get age() 当前返回

18 来自 this.#age

getter 只负责读取,不绕过 setter 的校验门。

执行日志

    访问器规则

    外部代码看起来像在读写普通属性 person.age,实际会触发 class 内部定义的访问器。setter 是入口守卫,getter 是受控出口。

    class Person {
      #age = 18;
    
      get age() {
        return this.#age;
      }
    
      set age(value) {
        const nextAge = Number(value);
        if (!Number.isFinite(nextAge) || nextAge < 0) return;
        this.#age = nextAge;
      }
    }