原型/原型链
一、_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()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix