引言
在 JavaScript 的世界里,原型链是一个'既熟悉又陌生'的概念。很多开发者知道它的存在,却很少直接操作它。然而,原型链是 JavaScript 面向对象编程的基石,理解它不仅能帮助你通过面试,更能让你深入理解 JavaScript 的设计哲学。
核心概念:什么是原型链?
基本定义
原型链是 JavaScript 中实现继承和共享属性的机制。每个对象都有一个内部链接指向它的原型(通过 __proto__ 或 [[Prototype]]),当访问对象的属性时,如果对象自身没有该属性,就会沿着原型链向上查找,直到找到属性或到达链的末端(null)。
关键术语澄清
// 混淆点澄清
function Person() {}
const p = new Person();
// 易混淆的三个概念:
console.log(p.__proto__); // Person.prototype
console.log(Person.prototype); // 构造函数的原型对象
console.log(Person.__proto__); // Function.prototype
// 正确的关系:
// p.__proto__ === Person.prototype
// Person.prototype.__proto__ === Object.prototype
// Object.prototype.__proto__ === null
原型链的"终点站"
任意对象 → Object.prototype → null ↑ └── 原型链查找的终点
原型链的工作原理
属性查找过程
const obj = { name: '小明' };
// 查找 obj.toString() 的过程:
// 1. 检查 obj 自身是否有 toString 属性 ❌
// 2. 检查 obj.__proto__ (Object.prototype) ✅ 找到!
// 3. 调用 Object.prototype.toString()


