核心是将配置放在原型上,实例仅存差异项,通过原型链自动查找未设置字段;用object.create建立继承链,支持多级覆盖、动态切换及组件间配置共享。

核心是把配置放在原型上,实例只存差异项,靠原型链自动查找未设置的字段。
用 Object.create 建立配置继承链
不复制默认值,而是让实例对象的原型指向配置对象。这样修改原型上的默认值,所有未覆盖该字段的实例会实时响应变化。
- 定义纯数据型默认配置(不含方法、不改 constructor)
- 用 Object.create(defaultConfig) 创建实例,而非直接赋值或深拷贝
- 实例可自由设置 label、type 等特有字段,其余字段自动从原型链获取
支持多级配置覆盖
表单或组件存在基础配置 → 业务配置 → 场景配置时,可逐层构建原型链。
一款AI工具,主要用于管理 OpenClaw 所使用的来自 OpenRouter 的免费 AI 模型。自动按质量对模型进行排序,配置回退机制以应对速率限制,并更新 opencla...,适合需要提升相关任务效率的用户。
- 先基于基础配置创建中间原型(如 userFormProto),覆盖部分字段
- 再用 Object.create(userFormProto) 创建具体实例(如 adminForm)
- 属性查找顺序为:自身 → 中间原型 → 基础配置,天然支持层级降级
运行时动态切换继承关系
需要临时变更行为时,可用 Object.setPrototypeOf() 替换实例原型。
- 适合主题切换、权限分级渲染等场景
- 避免重建整个对象,只需更新 [[Prototype]] 指针
- 注意慎用:频繁调用可能影响性能,且调试难度上升
和组件配置结合的实际写法
比如大屏图表中,柱状图、折线图共享 scale、title 等基础配置,但各自重写 render 和 getScale。
- 基类构造函数只做 config 合并:this.config = Object.assign({}, defaultConfig, config)
- 子类原型通过 Object.create(BaseChart.prototype) 接入,再单独重写需要的方法
- 子类实例访问 this.config.scale 时,若自身没设,就沿原型链找到 BaseChart 的默认值










