原型到底是什么?最高层Function类及Object类,(方法,初始化的对象,函数创建的对象,new的实例对象)的原型是怎么样的?

一.原型概述:

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所属的类,再找a所属的类的原型对象),因为函数的实例对象可以自动查找他所属类的原型对象的属性)。

二.开始图解

2.1 普通函数创建对象,该对象不指向这个普通函数的原型,是指向Object的原型。

原型到底是什么?最高层Function类及Object类,(方法,初始化的对象,函数创建的对象,new的实例对象)的原型是怎么样的?_第1张图片
2.2 let a = new A()怎么样形成原型的?

原型到底是什么?最高层Function类及Object类,(方法,初始化的对象,函数创建的对象,new的实例对象)的原型是怎么样的?_第2张图片
2.3 let a = new A()和最高层Function类和Object类又到底有着什么关系?

原型到底是什么?最高层Function类及Object类,(方法,初始化的对象,函数创建的对象,new的实例对象)的原型是怎么样的?_第3张图片
2.4(方法,函数,普通对象,实例对象)的原型是是什么?

原型到底是什么?最高层Function类及Object类,(方法,初始化的对象,函数创建的对象,new的实例对象)的原型是怎么样的?_第4张图片

你可能感兴趣的:(前端,后端,CSS)