私有字段完全不参与原型链遍历且无法被任何常规属性遍历或检查方法访问;它仅在定义它的类方法内可见,与公有属性独立共存,子类不可访问,序列化时自动忽略。

私有字段完全不参与原型链遍历,也不会被任何常规遍历方式触及。
它根本不在原型链上,也不属于对象的可枚举或不可枚举属性集合。
这意味着:
用于 inference.sh 的 JavaScript/TypeScript SDK,可运行 AI 应用、构建代理、集成 150+ 模型。包名:@inferencesh/sdk(npm install),完整 TypeScript 支持。
-
for...in循环不会访问私有字段 -
Object.keys()、Object.getOwnPropertyNames()、Object.getOwnPropertySymbols()都返回空(对私有字段而言) -
Reflect.ownKeys()同样忽略私有字段 -
JSON.stringify()会直接跳过私有字段,序列化结果里压根不存在它 -
in操作符、hasOwnProperty()对私有字段一律返回false
私有字段是类实例内部的“隐藏舱室”:每个实例独有一份,只在定义它的那个类的方法体内可见,既不继承、不共享、也不暴露给属性查找机制。
和公有属性共存时互不影响
你可以同时写 this.count = 0 和 this.#count = 0,它们是两个完全独立的存储位置,读写互不干扰。
子类无法访问父类的私有字段
哪怕子类调用 super,也拿不到父类的 #field —— 它只绑定在父类实例上,且语言层面禁止跨类访问。
所以,如果你在做属性遍历、深拷贝、状态序列化或调试检查,不用特意过滤 # 字段——它天然隐身,连被“误操作”的机会都没有。

















