0,内容:1)原型相关的基本概念2)原型链的概念和理解3)构造函数new的理解1.基本概念:构造函数:-可以理解为创建一个object实例的模板,为了避免重复创建多个结构相似的对象,将重复的结构抽取出来封装,这就是构造函数;1)原型对象:(prototype,也叫原型)——首先,它本质上是一个对象,当创建任何函数时都会默认创建原型;-其次,它被构造函数用来存放大家共享的属性和方法,从而节省空间;2)对象原型:(__proto__,objectprototype)-__proto__属性是在每个对象创建时默认创建的,指向其构造函数的原型;-例如:{}.__proto__===Object.protorype;3)constructor属性:-每个原型对象默认创建的属性指向constructor;-注意:实例对象也可以调用constructor,并不是说它本身就有这个属性,而是借用了原型;4)三者关系总结:-构造函数通过原型对象prototype存储共享方法;-对象实例通过对象原型__proto__找到原型对象prototype中的方法;-Prototype对象/对象原型通过constructor属性找到它的构造器,如下:2.原型链定义:原型链是一个对象在其中找到其内部属性/方法的链。如上:对象实例ldh在自身上没有找到要查找的属性,所以通过__proto__找到了Star的原型对象;而Star的原型对象的__proto__指向Object的原型对象prototype;而Object的原型对象prototype原型__proto__指向null。整个查找过程就是原型链,具体是:dh->Star.prototype->Object.prototype->null3.构造函数new的过程发生了什么:构造函数通过new创建了一个对象实例,那么它的本质是什么那么是吗?答:函数内部this定义共享属性,不使用this的私有属性实际上做了三件事:创建新对象;新对象的proto指向构造函数的prototype原型;setthescopeoftheconstructor将其传递给实例并执行构造函数,然后实例获取共享属性;funcrionFa(){this.name='fa';}letfa1=newFa();//核心三步letfa2={};fa2.__proto__=Fa.constructor;Fa.call(fa2);console.log(fa1.name,fa2.name);
