原型(prototype)、__proto__、constructor、原型链

本文深入解析JavaScript中的__proto__、prototype和constructor属性的作用与联系,阐述了原型链的工作原理,帮助理解对象属性查找机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

_ _ proto _ _

__ proto __和constructor属性是对象所独有的,当构造函数创建一个实例后,该实例内部将包含一个指针,指向构造函数的原型对象(fn.protorype),这个指针就是 __ proto __.
作用:当访问一个对象的属性时,如果该对象内不存在这个属性,就去它的 __ proto 属性所指向的那个对象(父对象)里找,一直找,直到 proto 属性的重点为null,然后返回undefined,再向上找就相当于再null值上找,就会报错。通过 proto __ 属性对象连接起来的这条链路就是原型链

原型(prototype)

prototype属性是函数所独有的,这个属性是一个指针,指向一个对象。因为函数也是一种对象,所以函数也拥有__proto__和constructor属性。
作用: 让该函数所实例化的对象们都可以找到公用的属性和方法,即 f1.proto === Foo.prototype

constructor(构造函数)

constructor属性也是对象才拥有的,指向该对象的构造函数,所有函数最终的构造函数指向都是Function.

原型链

当访问一个对象的某个属性的时候,会先在这个对象的属性上查找,如果没有找到,则会去它的__ proto __ 上查找,即构造函数的原型对象(构造函数.prototype),如果还没有找到就会再在构造函数的prototype. __ proto __上查找,这样一层一层向上查找形成的一个链式结构,我们称为 原型链。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值