第 8 章 · 类
getter/setter 校验门
#age
|
18
incoming value
21
等待 setter 检查
合法值会穿过门,写入私有字段。
getter 读取结果
get age() 当前返回
来自 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;
}
}