首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >古典继承与原型继承的区别

古典继承与原型继承的区别
EN

Stack Overflow用户
提问于 2016-01-10 16:07:06
回答 2查看 4.6K关注 0票数 7

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

你不觉得很尴尬吗?这个定义有意义吗?对于我来说,在这两种情况下,都有一个构造函数的使用(使用new,您可以覆盖返回的对象,这就是全部),在这两种情况下,都有一个原型继承。我是不是漏掉了什么,或者上面的定义不太准确?

*3.古典继承与原型继承有什么区别?

类继承:实例从类继承(如蓝图 - ,类的描述),并创建子类关系:分层类分类法。实例通常通过带有new关键字的构造函数实例化。类继承可以使用来自ES6的ES6关键字,也可以不使用。

原型继承:实例直接从其他对象继承。实例通常通过工厂函数或Object.create()实例化。实例可以由许多不同的对象组成,这样可以方便地进行选择性继承。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-19 06:25:44

在JavaScript中,类继承是在原型继承的基础上实现的,但这并不意味着它会做同样的事情:

除了继承属性之外,类继承还会进行额外的连接,将子[原型]链接到父[原型]。通常,super()构造函数也会被调用。这些额外的步骤形成父/子层次结构,并创建OO设计中可用的最紧密的耦合。

因此,“类从类继承并创建子类关系:层次类分类法.

理解有不止一种原型OO也是有用的。重要的是,存在连接继承原型委托

Concatenative继承非常重要,因为这允许在JavaScript中进行简单(且非常常见)的对象组合。记住“四人帮”说过:“喜欢对象组合而不是类继承。”

这是公认的面向对象设计智慧,由于连接继承,在JavaScript中这样做是很容易的。

有关更多细节,请参见“掌握JavaScript采访:类继承和原型继承有什么区别?”

票数 3
EN

Stack Overflow用户

发布于 2016-01-11 07:58:30

在“类”和“原型”之间存在接口语义的区别。

接口差分

如何在代码中使用它。差异和效益在文章中得到了很好的解释。

语义差异

无论它是如何在javascript中实现的,我们都可以使用ES6类来强调我们的对象具有"class“的含义。最初的“类”意味着我们可以将将某些对象表示为一个或另一组对象。参见集合论中的定义:理论)

而且,类是抽象的,在创建实例之前不存在。

如果我们谈论类继承,很容易理解抽象,即某个类可以是创建层次结构的另一个类的子类。

Prototype是来自某一组对象的示例或表示对象。在这种情况下,我们使用现有的原型(创建克隆或链接)创建新对象。它们也可以是新物体的原型。

当其他程序员阅读您的代码并查看您选择的-原型或类时,他们期望这些语义意义。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34707632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档