你不觉得很尴尬吗?这个定义有意义吗?对于我来说,在这两种情况下,都有一个构造函数的使用(使用new,您可以覆盖返回的对象,这就是全部),在这两种情况下,都有一个原型继承。我是不是漏掉了什么,或者上面的定义不太准确?
*3.古典继承与原型继承有什么区别?
类继承:实例从类继承(如蓝图 - ,类的描述),并创建子类关系:分层类分类法。实例通常通过带有new关键字的构造函数实例化。类继承可以使用来自ES6的ES6关键字,也可以不使用。
原型继承:实例直接从其他对象继承。实例通常通过工厂函数或Object.create()实例化。实例可以由许多不同的对象组成,这样可以方便地进行选择性继承。
发布于 2016-01-19 06:25:44
在JavaScript中,类继承是在原型继承的基础上实现的,但这并不意味着它会做同样的事情:
除了继承属性之外,类继承还会进行额外的连接,将子[原型]链接到父[原型]。通常,super()构造函数也会被调用。这些额外的步骤形成父/子层次结构,并创建OO设计中可用的最紧密的耦合。
因此,“类从类继承并创建子类关系:层次类分类法.”
理解有不止一种原型OO也是有用的。重要的是,存在连接继承和原型委托。
Concatenative继承非常重要,因为这允许在JavaScript中进行简单(且非常常见)的对象组合。记住“四人帮”说过:“喜欢对象组合而不是类继承。”
这是公认的面向对象设计智慧,由于连接继承,在JavaScript中这样做是很容易的。
有关更多细节,请参见“掌握JavaScript采访:类继承和原型继承有什么区别?”
发布于 2016-01-11 07:58:30
在“类”和“原型”之间存在接口和语义的区别。
接口差分
如何在代码中使用它。差异和效益在文章中得到了很好的解释。
语义差异
无论它是如何在javascript中实现的,我们都可以使用ES6类来强调我们的对象具有"class“的含义。最初的“类”意味着我们可以将类将某些对象表示为一个或另一组对象。参见集合论中的定义:理论)。
而且,类是抽象的,在创建实例之前不存在。
如果我们谈论类继承,很容易理解抽象,即某个类可以是创建层次结构的另一个类的子类。
Prototype是来自某一组对象的示例或表示对象。在这种情况下,我们使用现有的原型(创建克隆或链接)创建新对象。它们也可以是新物体的原型。
当其他程序员阅读您的代码并查看您选择的-原型或类时,他们期望这些语义意义。
https://stackoverflow.com/questions/34707632
复制相似问题