JavaScript原型链是对象继承属性和方法的核心机制,通过__proto__指向构造函数的prototype实现层级查找,最终终止于Object.prototype.__proto__为null,支持手动修改但推荐Object.create()或class extends。

JavaScript中的原型链是对象之间实现属性和方法继承的核心机制,它让一个对象可以访问另一个对象的属性和方法。
每个对象都有一个隐式原型(__proto__)
当你创建一个对象(比如 const obj = {} 或 new Date()),这个对象内部会自动关联一个原型对象,即它的 __proto__ 属性。这个属性指向该对象的构造函数的 prototype 对象。
- obj.__proto__ === Object.prototype(普通对象)
- [1,2].__proto__ === Array.prototype
- /abc/.__proto__ === RegExp.prototype
函数有显式的 prototype 属性
只有函数才有 prototype 属性(箭头函数除外),它是被用来作为“原型对象模板”的——当用 new 调用该函数时,新对象的 __proto__ 就会指向这个 prototype。
- function Foo() {} → Foo.prototype 是一个对象,默认有 constructor 属性
- const f = new Foo() → f.__proto__ === Foo.prototype
查找属性时会沿原型链向上搜索
当你访问一个对象的属性(如 obj.name),JS 引擎先在对象自身找;没找到,就去 obj.__proto__ 找;还没找到,就继续查 obj.__proto__.__proto__……直到到达 null(原型链终点)。
思乐微信商城微分销系统是以.net+access/mssql进行开发的微信分销系统。基于微信朋友圈的传播,是打造以分销商为中心的全新微信分销体验。让粉丝实时有效的获取朋友圈流量并快速分享购买分佣。因为是基于微信,所以要在微信上体验才更好。关注我们的微信核心功能:1、自动提示用户关注微信,解决一般程序无关注微信公众号的过程2、只要通过链接进一次,不过好久注册,什么方面注册,只要是用微信注册的,都会算
立即学习“Java免费学习笔记(深入)”;
- {}.__proto__ === Object.prototype
- Object.prototype.__proto__ === null(链的尽头)
- 所以所有对象最终都继承自 Object.prototype 上的方法,比如 toString()、hasOwnProperty()
可以手动修改原型链(但不推荐随意操作)
虽然可以通过 Object.setPrototypeOf() 或 __proto__ 修改原型,但会影响性能且不易追踪。更安全的方式是用 Object.create() 创建指定原型的对象,或用 ES6 的 class + extends 实现继承。
- const child = Object.create(parent) → child.__proto__ === parent
- class B extends A {} → B.prototype.__proto__ === A.prototype
基本上就这些。原型链不是黑箱,它是一条清晰、可追溯的属性查找路径,理解它才能真正掌握 JS 的面向对象本质。









