千家信息网

JavaScript原型、原型链和constructor属性实例分析

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本文小编为大家详细介绍"JavaScript原型、原型链和constructor属性实例分析",内容详细,步骤清晰,细节处理妥当,希望这篇"JavaScript原型、原型链和constructor属性
千家信息网最后更新 2026年11月02日JavaScript原型、原型链和constructor属性实例分析

本文小编为大家详细介绍"JavaScript原型、原型链和constructor属性实例分析",内容详细,步骤清晰,细节处理妥当,希望这篇"JavaScript原型、原型链和constructor属性实例分析"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

Prototype 原型对象

Prototype 翻译过来叫"原型",原型是一种在开发生命周期的早期显示应用程序或产品的外观和行为的模型。Javascript 中的 prototype 叫原型对象,是每一个函数都有的属性。

在控制台中打印 Array.prototype,得到下面的输出。发现它的 prototype 里有我们数组对象所有的函数,可以推知在使用构造函数创建了对象之后,对象会"引用"构造函数的prototype,从而自身可以访问这些函数。实际上,当使用一个对象来访问一个函数时,如果这个对象没有定义该函数,则会沿着原型链,一层一层的向上找,找对象的proto(简称一下),然后找对象proto的proto,然后找对象的proto的proto的proto,直到找到该函数并执行或者到原型链最顶层了也没有找到(报出undefined错误)。

at: ƒ at()

concat: ƒ concat()

constructor: ƒ Array()

copyWithin: ƒ copyWithin()

entries: ƒ entries()

every: ƒ every()

fill: ƒ fill()

filter: ƒ filter()

find: ƒ find()

// … 省略

[[Prototype]]: Object

function A(){} // 定义一个函数 A

1

在 Javascript 中函数也是对象,可以自行验证 A instanceof Object 或者 Array instanceof Object 或者 String instanceof Object 得到的结果都是 true。直观地看一下,打印 typeof A.prototype,获得以下结果。可见 A.prototype 这个 prototype 就是个对象。

原型链

函数:存在 prototype 属性,其中 prototype 属性里又有一个 constructor 属性。constructor 指向该函数本身。

对象:存在 __proto__ 属性,它指向它的构造函数的 prototype 。(一个函数,用它 new 出了对象,这个函数就叫构造函数)

结合一个例子,来说明清楚。

function A() {

this.text = 'I am A.'

}

const a = new A();

console.log(a.__proto__ === A.prototype); // true

console.log(a.__proto__.__proto__ === Object.prototype); // true

console.log(Object.prototype.__proto__); // null

console.log(a.__proto__.__proto__.__proto__); // null

a 是函数 A 构造出来的对象, a.__proto__ 指向它的构造函数的原型对象 A.prototype, A.prototype.__proto__ 指向它的原型对象 Object.prototype,Object.prototype.__proto__ 指向 null。

下面这段话摘自MDN文档:

每个实例对象都有一个私有属性(称之为 __proto__ )指向它的构造函数的原型对象(prototype)。该原型对象也有一个自己的原型对象(__proto__),层层向上直到一个对象的原型对象为 null。根据定义,null 没有原型,并作为这个原型链中的最后一个环节。

为了更清楚的看到原型对象和原型链到底是啥样子的,在控制台打印 A.prototype 和 Object.prototype,输出如下:

[[Prototype]] 只是在控制台里这样显示,实际上它是就是 __proto__。可以得知,A.prototype.__proto__ 指向了 Object.prototype,也就是 a.__proto__.__proto__ 指向 Object.prototype。一个原型对象指向上层的一个原型对象,上层的原型对象一个又指向上上层的一直指到最后为 null 的链,就是原型链。

constructor 属性

constructor 是 prototype 的属性,constructor 指向构造函数本身。

A.prototype.constructor === A // true

('some text')。constructor === String // true

([1,2])。constructor === Array // true

读到这里,这篇"JavaScript原型、原型链和constructor属性实例分析"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。

原型 对象 函数 属性 指向 实例 实例分析 分析 上层 就是 控制台 文章 控制 清楚 内容 实际 实际上 结果 输出 妥当 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技海报 互联网科技巨头监管 互联网 科技创业 互联网科技革命 壕鑫互联网络科技 成都仁贤领冠互联网科技有限公司 云创客互联网科技公司 开一家科技互联网公司需要多少钱 互联网科技和信息 广州新华互联网科技学校电竞方面 佛山市翊博互联网络科技有限公司 互联网科技和法律行业 世界互联网领先科技成果获奖 区块链结合互联网科技 工业互联网展湾科技股份有限公司 山东子淼互联网科技有限公司 怎样加入科技互联网 富国互联网科技002692 知域互联网科技有限公司官网 小牛互联网科技有限公司地址 深圳恒合互联网络科技有限公司 互联网金融 科技创新 互联网科技美容 国外互联网科技网站 团飞科技与伯堂互联网服务平台 宁夏众和广鑫互联网科技有限公司 互联网金融中的现代科技 洛阳共同富裕互联网科技有限公司 互联网方面的科技前沿 广东猫王互联网科技有限公司电话
0