JavaScript中的原型链是什么_它如何影响对象的继承机制?

admin 百科 16
原型链是JavaScript中对象查找属性和方法时遵循的隐式链接路径,由对象的__proto__指向其构造函数的prototype构成,逐级向上直至null;它决定属性访问结果与方法可用性,支撑基于委托的继承机制。

JavaScript中的原型链是什么_它如何影响对象的继承机制?-第1张图片-佛山资讯网

JavaScript中的原型链是对象查找属性和方法时遵循的一条隐式链接路径,它由对象的__proto__(或通过Object.getPrototypeOf()获取)指向其构造函数的prototype对象构成,逐级向上直到到达null。它不是语法结构,而是运行时的属性访问机制,直接决定了“一个对象能不能用某个方法”或“读取某个属性时得到什么值”。

原型链是怎么形成的?

每个函数(包括构造函数)都有一个prototype属性,它默认是一个普通对象,带有一个constructor属性指回该函数;每个由该函数创建的实例,其__proto__会自动指向该函数的prototype。这就搭起了第一级连接。

  • 例如:const obj = new Array();obj.__proto__ === Array.prototype
  • Array.prototype.__proto__ === Object.prototype → 因为Array本身是Function的实例,而Function.prototype__proto__最终连到Object.prototype
  • Object.prototype.__proto__ === null → 原型链终点

属性查找怎么走原型链?

当你访问obj.x时,JS引擎按顺序查找:

  • 先看obj自身有没有x(自有属性)
  • 没有就去obj.__proto__上找
  • 还没找到,继续查obj.__proto__.__proto__,依此类推
  • 直到某一级有该属性,或抵达null(此时返回undefined

这个过程是动态的:哪怕你在链中间后期给某个prototype加了新属性,所有已存在、未覆盖该属性的对象都能立刻访问到——因为它们共享同一条链。

立即学习“Java免费学习笔记(深入)”;

标签: javascript es6 java js

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~