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

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

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

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

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

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

解决方法

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

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

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

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

连接继承很重要,因为这允许JavaScript中的简单(和非常常见)对象组合.请记住,四人帮说,“赞成对象组成而不是类继承.”

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

有关更多详细信息,请参阅“Master the JavaScript Interview: What’s the Difference Between Class and Prototypal Inheritance?”

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...