JavaScript 原型与原型链机制解析
本文详解 JavaScript 中所有函数共有的 prototype 属性及其作用,阐述实例对象通过 __proto__ 指向构造函数原型的机制。通过代码示例展示如何沿原型链逐级查找属性直至 Object,揭示对象间通过原型链串联的关系。
1. 原型 prototype
在 JavaScript 中,所有函数都具备 prototype 属性,因此拥有该属性的对象均为函数。prototype 的主要功能是向对象添加方法或属性。
function persion(){}
persion.prototype.name = "xiaoming"
console.log(persion.prototype)//{name: "xiaoming", constructor: ƒ}
2. 原型指针:__proto__
若通过 persion 函数创建实例对象 Persion1,并使用 prototype 为其添加属性的写法如下:
function persion(){}
persion.prototype.name = "xiaoming"
let Persion1 = new persion();
console.log(Persion1) //控制台结果如下
打印实例 Persion1 的结果如下:

从上述打印结果可知,Persion1.__proto__.name 等于 persion.prototype.name,即实例对象的 __proto__ 属性指向其构造函数的 prototype。
理解上述概念后,原型链便易于掌握。我们可以通过 Persion1.__proto__.__proto__ 直接访问 Object 的方法。为更直观说明,参考以下代码:
function persion(){}
persion.prototype.name = "xiaoming"
let Persion1 = new persion();
console.log(Persion1.__proto__.__proto__.toString) //通过原型链查找到的Object的toString方法
console.log(Object.prototype.toString)//Object上的toString方法
控制台打印结果如下,这验证了原型链逐级查找的特性。

总结
任何对象均可通过原型链(即 __proto__ 属性)进行逐级查找,最终目标均为 Object,必经路径涉及 function。这种关系如同用链条串联,我们称之为原型链。

以上就是浅谈 JS 的原型和原型链的详细内容,更多关于 JS 的原型和原型链的资料请关注本站其它相关文章!
JS处理含Emoji或中文的字符串转数组乱码问题
2026-11-05 16:12:28
JS怎么使用展开运算符合并对象
2026-11-05 14:42:18
ES6+环境下判断JS对象为空的简洁写法
2026-11-05 12:12:23
怎么通过replacer函数自定义JS中JSON的格式化输出
2026-11-05 11:19:44
JS正则表达式基础:字面量与RegExp构造函数的区别及常用元字符
2026-11-05 11:16:58
