原型继承

在ES6中,js终于出现了正式的class关键字,对于js中类的实现和继承,似乎也给出了官方的方向,class也只是一种语法糖,实际还是使用了js的原型链来实现了类的继承功能。

所以了解原型链继承可以帮助我们更好的理解和学习JS中的类和继承,已经ES6中的class

首先我们需要了解原型链是什么意思。

JavaScript 常被描述为一种基于原型的语言 (prototype-based language)——每个对象拥有一个原型对象,对象以其原型为模板、从原型继承方法和属性。原型对象也可能拥有原型,并从中继承方法和属性,一层一层、以此类推。这种关系常被称为原型链 (prototype chain)

首先js中的所有变量几乎都可以被看做对象,然后所有的对象都会有它的原型对象,而对象中有一个[[prototype]]来指向自己的原型对象。

这个设计感觉就像是子类和父类的关系,但是并不是完全相同。

而我们需要做的就是使下面这个等式成立

1
childobj.[[prototype]] === parentObj