一.原型概述:
1.原型是一个内存地址空间,也就是说也是一个对象 ,
只是不像函数和对象是我们可见的,原型这个对象(内存空间)
存放该原型对象所属(constructor来查看)的类(对象)和类(对象)
的创建对象(普通创建,new实例化创建)的“共享属性”,类(对象)和类(对象)
的创建对象都能访问。
2.不管是1.new A()形成了:相当于了一个A构造函数,一个A的原型,(注意:实例对象还没有存在)。2.a={}形成了,a对象没有创建出原型,但可以访问最高层的Object的原型。3.A()形成了:自己的原型。
3.(重点):其实每个类对象都有一个this指向线的,只是单独在一个原型链图上没有显示出来,比如继承:A.call(B),此时B类对象
的this指向线会指向A类对象,B类对象也就继承了A类对象的私有属性。
4.(重点):在对象里面的函数都叫:“方法”,1.方法没有自己this(不是对象),2.方法没有原型(也没有原型属性)。
5.所有不是new 实例出来的对象都叫“普通对象”,所有普通对象的__proto__都默认指向Object的原型。
6.任何函数都有原型。
7.函数内部只能通过函数.prototype才能拿到原型对象上的属性(不会自动找到自己的原型对象),而函数的实例对象可以直接拿到原型对象上的属性
(例:a.age(备注:先找自身,再找a所属的类