JavaScript原型链是基于[[Prototype]]隐式引用的对象继承机制,通过逐级向上查找属性和方法实现复用,终点为Object.prototype.__proto__ === null。

JavaScript 的原型链是实现对象继承的核心机制,它不依赖类(class)的语法糖,而是基于每个对象内部的 [[Prototype]] 隐式引用,逐级向上查找属性和方法。
每个对象都有一个原型(prototype)
对象在创建时会关联一个原型对象,这个原型通常是其构造函数的 prototype 属性(普通对象则默认指向 Object.prototype)。这个链接不是通过属性名暴露的,但可通过 Object.getPrototypeOf(obj) 或非标准但广泛支持的 obj.__proto__ 访问。
例如:
function Person(name) { this.name = name; }
Person.prototype.sayHello = function() { console.log('Hello'); };
const p = new Person('Alice');
console.log(p.__proto__ === Person.prototype); // true
console.log(Person.prototype.__proto__ === Object.prototype); // true
登录后复制
属性访问遵循“原型链查找”规则
当你读取一个对象的属性时,JS 引擎会:
立即学习“Java免费学习笔记(深入)”;
- 先检查该对象自身是否拥有该属性(
hasOwnProperty为 true) - 如果没有,就沿着
[[Prototype]]链向上查找,直到找到或抵达null(即Object.prototype.__proto__) - 写入属性默认只作用于对象自身,不会修改原型上的同名属性
这意味着方法复用靠共享原型,而数据状态应放在实例上,避免互相干扰。
标签: javascript java js 为什么
还木有评论哦,快来抢沙发吧~