知识卡片

原型直接继承

普通读书笔记卡 · 1493.b

内容

原型式继承摒弃类,先用对象字面量构造有用对象,再用 Object.create 基于它创建更多实例并按差异定制属性方法——即”差异化继承”,不需要先定类再实例化的间接层。此关系也适用于作用域链:内部作用域用 Object.create(scope) 继承外部符号,离开时恢复原引用。关联:[[能力重于血统]];发散:配置对象、策略对象和测试替身都适合增量构造。

参考来源

- 位置:《JavaScript语言精粹(修订版)》第5章《继承 Inheritance》"原型"一节 - 结论依据:原文说明基于原型的继承"一个新对象可以继承一个旧对象的属性",通过 Object.create 从已有对象构造新实例再定制差异,并称之为"差异化继承",用块作用域解析的例子进一步展示这种嵌套继承关系,据此推出原型式继承省去类定义间接层、直接从对象构造对象的结论。 - 原始内容:基于原型的继承相比基于类的继承在概念上更为简单:一个新对象可以继承一个旧对象的属性……这是一种"差异化继承(differential inheritance)"。通过定制一个新的对象,我们指明它与所基于的基本对象的区别。