1、昨天说了,构造函数的方法对象都放到prototype里,实例对象可以直接使用,那么为什么实例对象可以直接使用呢?就是因为__proto__的存在。
存在一个三角关系
new Star().__proto===Star.prototype
Star.prototype.constructor=Star
__proto__是对象专有,所以叫对象原型,而prototoype叫原型对象
2、继承
继承是面向对象的三大特征之一
写法为:
其中say是Singer自带的方法,这样Singer不仅继承了Star的内置属性,同时也拥有自己的方法。
就是把孩子,也就是继承者看作是父类的对象去创建,这样在对子类添加新的方法时,则不会对父类产生影响。
3、原型链
就是实例的__proto__指向构造函数的prototype,而父类的prototype也有__proto__,因为他也是个对象,他的__proto__再指向他的父辈的prototype,以此类推,直到最高阶Object,这条链就是原型链。Object.prototype.__proto__=null,就是指到头,没有啦
4.instanceof
就是查看原型链上是否存在该父类
会显示true。
补充闭包
今天看课的时候,老师说闭包,没想起来,就重新看了一下,主要写法如下