通过一个对象的__proto__可以找到它的原型对象,原型对象也是一个对象,就可以通过原型对象的__proto__,最后找到了我们的 Object.prototype, 从实例的原型对象开始一直到 Object.prototype 就是我们的原型链

补充

补充:原型链是 JS 实现继承的底层机制。每个对象都有一个隐式原型 __proto__ 指向构造函数的 prototype;访问对象属性时,若自身没有则沿 __proto__ 向上查找,直到 Object.prototype 为止,再往上就是 null,整条链路即"原型链"。函数的 prototype 用来挂载被实例共享的方法,__proto__ 决定"我从哪儿继承"。

关键关系:

  • obj.__proto__ === Constructor.prototype
  • Constructor.prototype.__proto__ === Object.prototype
  • Object.prototype.__proto__ === null
function Foo() {}
const f = new Foo()
console.log(f.__proto__ === Foo.prototype)           // true
console.log(Foo.prototype.__proto__ === Object.prototype) // true
console.log(Object.prototype.__proto__ === null)        // true

来源整理自:vue3js.cn 面试官系列