经典继承和原型继承之间的区别

Fra*_*ard 7 javascript inheritance prototype class ecmascript-6

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

这对你来说听起来不是很尴尬吗?这个定义有意义吗?对于我来说,在这两种情况下都使用了一个构造函数(使用new可以覆盖返回的对象)并且在两种情况下都有一个原型继承.我错过了什么或上面的定义不是很准确吗?

*3.经典继承和原型继承之间有什么区别?

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

原型继承:实例直接从其他对象继承.实例通常通过工厂函数或实例化实例化Object.create().实例可以由许多不同的对象组成,允许轻松选择性继承.*

Eri*_*ott 3

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

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

因此,“类继承自类并创建子类关系:分层类分类法。

了解不止一种原型面向对象也很有用。重要的是,有串联继承原型委托

连接继承很重要,因为它允许在 JavaScript 中进行简单(并且非常常见)的对象组合。记得四人帮说过,“优先考虑对象组合而不是类继承。”

这是普遍接受的 OO 设计智慧,并且由于串联继承,在 JavaScript 中做到这一点是轻而易举的。

有关更多详细信息,请参阅“掌握 JavaScript 面试:类继承和原型继承之间有什么区别?”