JavaScript 对象通过“原型链”实现属性查找与继承。
当你访问 obj.foo 时:
- 先在
obj自己身上找。 - 找不到,就去
obj.__proto__(原型)上找。 - 继续往上,直到
null为止。
这条向上的链条就是原型链。
Function.prototype:函数的原型对象(给实例用)。obj.__proto__:对象的原型引用(指向构造函数的prototype)。
class 只是语法糖,底层仍然是“函数 + 原型链”。
class Person {
say() { console.log('hi'); }
}
let p = new Person();p 的 __proto__ 指向 Person.prototype。
- 原型链不是“复制”,而是“引用”。
- 修改原型会影响所有实例。
原型链让 JavaScript 拥有灵活的继承方式,但也需要小心全局修改。