最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
JavaScript中原型式继承怎么写?它有什么应用场景?
时间:2026-07-08 11:45:51 编辑:袖梨 来源:一聚教程网
原型式继承以现有对象为模板,通过Object.create()创建新对象并建立委托关系,实现行为复用而非实例复制,适用于配置派生、轻量实体系统等场景。
原型式继承不依赖构造函数,直接以一个现有对象为模板,创建出新对象并建立委托关系。它写法简洁,核心是 Object.create()。
怎么写?
最简写法只有一行:
const parent = { name: 'Base', skills: ['JS'] };<br>const child = Object.create(parent);<br>child.name = 'Derived'; // 自身属性<br>child.skills.push('React'); // 注意:引用类型仍共享
关键点:
-
Object.create(obj) 创建一个新对象,其
[[Prototype]]直接指向obj - 新对象不执行任何构造函数,没有
constructor自动绑定(如需可手动设) - 所有属性查找都委托给原对象,实现“行为复用”而非“实例复制”
适用场景
它适合轻量、数据驱动、无需类抽象的场合,尤其当“对象即配置”或“对象即模板”时:
立即学习“Java免费学习笔记(深入)”;
-
配置对象派生:一个基础配置对象(如 API 地址、超时时间),通过
Object.create(baseConfig)快速生成 dev / prod / test 等变体,各自覆盖部分字段,其余自动继承 -
游戏或实体系统中的轻量委托:比如
entity对象定义通用方法(update()、render()),player = Object.create(entity)和enemy = Object.create(entity)各自添加专属逻辑,共享底层行为 -
避免深拷贝开销的临时扩展:想临时给某个对象加一组方法,又不想污染原对象或重复创建函数,可用
Object.create(templateWithMethods) - 快速构建原型链实验或测试桩:在调试或单元测试中,快速模拟具有特定原型关系的对象结构,无需定义完整构造函数体系
注意什么?
它不是万能替代,有明确边界:
- 引用类型(数组、对象)仍会共享——和原型链继承一样,这不是 bug,而是委托机制的自然表现
- 不支持向“父对象”传参初始化,因为没构造函数调用环节
- 不适合需要严格类型识别(如
instanceof)的场景;它产出的是普通对象,不是某构造函数的实例
相关文章
- 《符文世界:龙之荒野》法老权杖获取方法介绍 07-08
- 《符文世界:龙之荒野》诺金裹尸布获得方法介绍 07-08
- 符文世界:龙之荒野 道顿边地无伤刷蓝龙位置分享 07-08
- 符文世界:龙之荒野沙漠地区材料获得方法介绍 07-08
- 诛仙2玩法是什么 07-08
- 异环伊波恩合伙人行动任务完成指引 07-08