【问题标题】:Are "Prototypal Inheritance" and "Prototype Chain" one and the same in JS? [closed]JS中的“原型继承”和“原型链”是一回事吗? [关闭]
【发布时间】:2020-10-02 11:58:24
【问题描述】:

我现在正在学习 JS,因为我是新手,所以正在寻找 inheritance in JS。我遇到了两个字:

  1. 原型继承
  2. 原型链

你能告诉我两者是相同的还是不同的? 拜托,我是新手,很困惑。请帮忙。提前致谢。

【问题讨论】:

  • 不,“原型继承”是概念,“原型链”是该概念实现的一部分。
  • @Teemu - 您能否解释并添加作为答案。这会有所帮助。
  • 我认为这是一个基本的语言特性,解释的范围很广,你最好阅读一些教程来理解原型继承。例如,请参阅 MDN 上的 a tutorial

标签: javascript html ecmascript-6


【解决方案1】:

我认为出于所有意图和目的,他们指的是学习 JS 的人的相同概念。它们是两个不同的概念,需要分别研究吗?不,它们只是与 JS 中相同的继承概念相关的两个术语。

一个我知道并不完美的松散类比,但应该有助于理解这两个术语以及它们之间的关系:

  • 我有一个父亲,我从他那里继承了我的基因。我父亲从他父亲那里继承了他的基因,等等。这是我的原型链

  • 您还有一位父亲,您的基因从他那里继承。你父亲从他父亲那里继承了他的基因,等等。这就是你的原型链

  • 我们都使用原型继承,但我们有不同的原型链


一些开发人员喜欢争论语义并掌握所有技术只是为了适应其他人,但如果您是学习 JS 的初学者,您绝对不需要强调这两个术语指的是不同的研究领域,因为它们不是。

【讨论】:

  • @Gary ... 1/3 所选择的类比有很大的误导性。尤其是使用术语遗传学,它实际上与大多数人一样匹配继承,并且classic 受过训练的程序员 在概念上理解它。在我看来,这个例子的结论是...... “我们都使用多重继承(除了父系外,还有一条母系遗传系),但我们每个人都是来自不同父类(祖先)的不同(子)类“。
  • @Gary ... 2/3 更好的类比是... a) 我无法在墙上钻孔,因为我没有钻孔机;但我认识一个朋友 [... of a friend [... ]],他实际上拥有一个。我确实借用了她/他的机器,以便在 (/在上下文中) 我的墙上钻一个洞。 ... b)您也无法在墙上钻孔,因为您也没有钻孔机;你不是我的朋友,因此我不希望你从我朋友的“工具链”中受益。 ...
  • @Gary ... 3/3 ... 但幸运的是,您自己认识一个朋友 [... of a friend [... ]],他实际上拥有一台钻孔机。您将借用她/他的机器,以便将整体钻入(/在上下文中)您的墙上。 ... c) 我们都使用了“工具链”。它们是不同的,因为每个钻井设备的所有者并不相同。每个人甚至都有自己的工具实现。我的(...(朋友的)朋友的)朋友的朋友可能是 Bosch。您的借款链之一可能是B&D
  • @Gary ... 总结:示例的“工具链”就像原型链。因此,两者都是基于原型的委托概念的实现。后者被称为原型继承,因为委托部分是一个内置的自动化过程。
猜你喜欢
  • 1970-01-01
  • 2022-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-21
  • 1970-01-01
  • 2013-05-20
  • 2016-08-06
相关资源
最近更新 更多