javascript - 经典继承与原型(prototype)继承的区别

标签 javascript class inheritance prototype ecmascript-6

我在这里找到了这个定义:https://medium.com/javascript-scene/10-interview-questions-every-javascript-developer-should-know-6fa6bdf5ad95#.y0nc8kx34

你不觉得很尴尬吗?这个定义有意义吗?对我来说,在这两种情况下都使用了构造函数(使用 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/

相关文章:

c++ - 派生类中的函数重载

python - 继承setUp方法Python Unittest

javascript - NSData dataWithContentsOfUrl 需要 javascript

Java - 接口(interface)是否过多?

.net - 类库中的 Membership.CreateUser()

java - java中继承的缺点

javascript - 如何向国际 Google 网站添加域切换选择器?

javascript - React js getInitialState 转换为 es6 后不起作用

javascript - 检测特殊的 Javascript 触摸事件

python - 正确使用 __format__