javascript 原型(一)

本文详细解释了JavaScript中函数的原型属性如何工作,包括构造函数、实例与原型之间的联系,以及如何通过__proto__访问原型。

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

原型:我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象, 而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。

我们随意定义一个函数

function Person(){}

我们可以通过

Person.prototype

访问 **function Person()**的原型。

原型**prototype是一个指针,指向一个对象**,因此

typeof Person.prototype =="object";//true

在默认情况下,所有原型对象都会自动获得一个constructor (构造函数)属性,这个属性包含一个指向prototype 属性所在函数的指针。

代码求证:

Person.prototype.constructor==Person;//true

输入图片说明

实例的内部将包含一个指针(内部 属性),指向构造函数的原型对象。ECMA-262 第5 版中管这个指针叫[[Prototype]]。虽然在脚本中 没有标准的方式访问[[Prototype]],但Firefox、Safari 和Chrome 在每个对象上都支持一个属性 proto

每一个对象都有一个[[Prototype]]属性,指向实例在构造函数的原型,我们可以通过__proto__访问此属性。

p=new Person();
p.__proto__

[[Prototype]]连接存在于实例与构造函数的原型对象之间,而不是存在于实例与构造函数之间

p.__proto__==Person.prototype;//true
p.__proto__==Person.constructor;//false

每个对象都有 [[Prototype]]属性,原型也是一个对象,所以原型也有 [[Prototype]]属性,我们可以通过如下方式访问:

Person.prototype.__proto__

MDN对**Object.prototype.proto** 属性在定义为:

指向当对象被实例化的时候,用作原型的对象。

意思差不多就是原型的原型。

输入图片说明

转载于:https://my.oschina.net/u/3238650/blog/1545794

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值