面向对象三大特性
封装:一段功能代码在很多地方重复使用,可以封装成一个功能方法。优势在于定义的属性只可以在类的内部操作,避免外部修改,内部修改通过定义封装的方法
继承:子类继承父类,减少了代码重复
多态:子类继承父类的同时,可以拓展
原型链:child.__proto__ = Child.prototype = new Father() = father.__proto__ = Father.prototype.
实例内部指针__proto__指向其构造函数的原型,重写子级prototype使其等于父级的实例,就可以建立一个类似链条的关系。