你不觉得很尴尬吗?这个定义有意义吗?对我来说,在这两种情况下都使用了构造函数(使用 new 可以覆盖返回的所有对象)并且在这两种情况下都有原型(prototype)继承。我是不是遗漏了什么或者上面的定义不是很准确?
*3。经典继承和原型(prototype)继承有什么区别?
类继承:实例继承类(如蓝图 类的描述),并创建子类关系:层次类分类法。实例通常通过带有 new
关键字的构造函数实例化。类继承可以使用也可以不使用 ES6 中的 class
关键字。
原型(prototype)继承:实例直接从其他对象继承。实例通常通过工厂函数或 Object.create()
实例化。实例可以由许多不同的对象组成,允许简单的选择性继承。*
最佳答案
“类”和“原型(prototype)”之间存在接口(interface)和语义的区别。
界面差异
如何在代码中使用它。文章中很好地解释了区别和好处。
语义差异
无论在javascript中如何实现,我们都可以使用ES6-class来强调我们的对象具有“类”的含义。最初“类”的意思是我们可以分类将一些对象归为一组或另一组对象。参见集合论中的定义:https://en.wikipedia.org/wiki/Class_(set_theory) .
此外,类是抽象的东西,在我们创建实例之前不存在。
如果我们谈论类继承 - 很容易理解一些类可以是另一个创建层次结构的类的子类的抽象。
Prototype 是一些对象集中的示例或代表性对象。在这种情况下,我们使用现有原型(prototype)创建新对象(创建克隆或链接)。它们也可以是新对象的原型(prototype)。
当其他程序员阅读您的代码并查看您选择的内容时 - 原型(prototype) 或类,他们期望这些语义。
关于javascript - 经典继承与原型(prototype)继承的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34707632/