JavaScript原型链是对象属性访问的委托查找路径,从自身开始逐级向上查找至Object.prototype后终止于null,本质是动态运行时机制而非类继承。

JavaScript 原型链是对象查找属性和方法时所依赖的一条隐式连接路径,它让对象能“顺着链”向上访问其构造函数的 prototype 对象上的属性和方法。基于原型的继承,不是靠类与类之间的复制或抽象关系,而是靠对象与对象之间**委托访问**——一个对象找不到某个属性时,会自动去它的原型(__proto__)上找,原型找不到再找原型的原型,直到到达 null 为止。
每个对象都有一个 __proto__,指向它的原型对象
这个原型对象通常是其构造函数的 prototype 属性值。比如:
-
let obj = {}→obj.__proto__ === Object.prototype -
let arr = []→arr.__proto__ === Array.prototype -
function Foo() {};let f = new Foo()→f.__proto__ === Foo.prototype
注意:__proto__ 是非标准但被广泛支持的属性(现代推荐用 Object.getPrototypeOf(obj) 获取)。
构造函数的 prototype 是实例对象的原型模板
你往 Foo.prototype 上添加方法,所有 new Foo() 创建的实例都能通过原型链访问到:
立即学习“Java免费学习笔记(深入)”;
Foo.prototype.sayHi = function() { console.log('hi') }-
f.sayHi()能执行,因为f自身没有sayHi,就去f.__proto__(即Foo.prototype)上找到了
这就是“共享方法、节省内存”的核心机制——不用在每个实例上重复定义相同方法。
标签: javascript es6 java
还木有评论哦,快来抢沙发吧~