在ES6中,js终于出现了正式的class
关键字,对于js中类的实现和继承,似乎也给出了官方的方向,class
也只是一种语法糖,实际还是使用了js的原型链来实现了类的继承功能。
所以了解原型链继承可以帮助我们更好的理解和学习JS中的类和继承,已经ES6中的class
。
首先我们需要了解原型链是什么意思。
JavaScript 常被描述为一种基于原型的语言 (prototype-based language)——每个对象拥有一个原型对象,对象以其原型为模板、从原型继承方法和属性。原型对象也可能拥有原型,并从中继承方法和属性,一层一层、以此类推。这种关系常被称为原型链 (prototype chain)
首先js中的所有变量几乎都可以被看做对象,然后所有的对象都会有它的原型对象,而对象中有一个[[prototype]]来指向自己的原型对象。
这个设计感觉就像是子类和父类的关系,但是并不是完全相同。
而我们需要做的就是使下面这个等式成立
1 | childobj.[[prototype]] === parentObj |