原型链通过委托查找实现状态继承,组件实例仅存差异字段,共性配置挂载原型;支持多级类型继承与运行时热更新,配置与行为解耦。

原型链本身不直接“传递状态”,而是通过委托查找机制,让组件树天然具备状态继承与响应能力——关键不是把状态从父往子推,而是让每个节点只存差异,共性配置挂原型,读取时自动向上委托。
只存差异,共性挂原型
组件实例不应携带全部状态字段,而应仅保留个性化部分。通用状态(如 disabled、visible、theme)统一定义在共享原型对象上:
- 用 Object.create(sharedProto) 创建每个节点实例
- 实例自身只设 label、key、children 等特有字段
- 访问 node.disabled 时,引擎自动沿原型链向上查找,未覆盖就取默认值
多级原型链表达类型继承
当组件存在语义层级(如 BaseNode → FolderNode → ProjectFolderNode),可逐层构建原型链:
- baseNodeProto 定义基础行为:icon: 'folder'、draggable: true
- projectFolderProto = Object.create(baseNodeProto),覆盖 icon: 'project'、isRoot: true
- 具体节点基于 projectFolderProto 创建,仅补充 name 和 id
- 查找顺序为:实例 → projectFolderProto → baseNodeProto,自然匹配父子委托关系
运行时改原型,实现状态热更新
因为状态不拷贝、只委托,修改原型上的字段会实时影响所有未覆盖该字段的后代节点:
- 切换主题?设 sharedProto.theme = 'dark',整棵树未显式指定 theme 的节点立刻响应
- 租户级禁用操作?设 baseNodeProto.disabled = true,所有基础节点及其子类自动灰显
- 已手动设置 node.disabled = false 的节点不受影响,定制优先级始终高于默认
状态与行为解耦:原型管配置,组合管逻辑
原型链专注配置继承,交互行为和渲染由更现代的方式承载:
- UI 内容用插槽(slot)或 children 投影,不靠继承扩展模板
- 展开/折叠、拖拽、键盘导航等能力抽成 useToggle、useDraggable 等组合函数
- 节点实例保持为纯净数据对象,渲染由独立的 TreeItem 组件负责











