JS中的继承方式,以及JS中经典的抽象概念,ES5和ES6的继承区别

一:JS中的抽象概念

在说继承方式之前,先来了解下js中几个较为抽象的概念。

1.原型
原型就是
在js中万物皆对象,对象又分为两种:普通对象(Object)和函数对象(Function)。-----null也是对象,但这里不做考虑。
任何对象都具有隐式原型属性(__proto__),因为是人人平等的属性,所以,加上了双下划线,可以理解为魔法属性。
只有函数对象有显式原型属性(prototype)。
参考地址:https://blog.csdn.net/u012468376/article/details/53121081
2.原型链:原型链是针对原型对象的,在查找实例属性时,现在实例中查找,如果没有找到,再到obj.proto(=f1.prototype)原型对象,再到f1.prototype.proto(=f2.prototype),依次向上查找。
3.作用域链:作用域链是针对变量的,现在自己的变量范围内查找,找不到,再沿着作用域网上查找。
4.构造函数、原型对象和实例之间的联系(图示)
5.构造函数、原型对象、子类构造函数、子类原型对象和子类实例之间的联系(图示)

ES5中乱七八糟的继承,在ES6中得到梳理

ES5中,有六种继承方式
ES6中,只有一种继承方式
具体参考如下
https://www.cnblogs.com/annika/p/9073572.html

原文地址:https://www.cnblogs.com/cn-oldboy/p/12782313.html