原型/原型链

一、_proto_和prototype的区别

_proto_和constructor是对象独有的。prototype是函数独有的 

使用js构造函数来创建对象的时候,每个函数构造函数的内部都有一个属性prototype,该属性值是一个对象,包含了可以由该构造函数创建的所有实例的共享方法和属性,当使用构造函数创建新的对象后,这个对象内部将包含一个指针,这个指针指向构造函数prototype属性对应的值,ES5 中这个指针被称为对象的原型,但是最好不要直接使用这个属性,一般我们采用object.getPrototypeOf()来获取对象的原型。当我们在一个对象里找不到某个属性,就会去他的原型对象里找这个属性,这个属性也会有自己的原型,就一直找下去就会形成原型链,原型链的尽头是object.prototype.

原型(prototype):可理解为对象的父亲,在js对象中 ,每个对象都包含了一个属性__proto__用来指向他的父亲,对象的原型可以通过Object._proto_访问。

实例:通过构造函数和new创建出来的就是实例,实例通过_proto_指向原型原型,通过constructor指向构造函数

实例:{                                              

_proto_

}

构造函数(){

prototype: {方法和属性}//原型

}

实例._proto_=== 原型

构造函数.prototype === 原型

实例.constructor ===构造函数

原型.constructor === 构造函数

二、原型链

原型链由原型对象组成,每个对象的_proto_属性指向该对象构造函数的原型。当查找某个对象属性时,如果属性不存在,则向上查找,直至查找到,否则输出undefined。

js获取原型的方法:

p.proto  ===原型

p.constructor.prototype ===原型

p.getPrototypeOf()

posted @ 2022-02-21 10:15  大坏坏狼  阅读(52)  评论(0编辑  收藏  举报