在 JavaScript 中,每个对象都有一个特殊的属性 __proto__
,表示该对象的原型。原型是一个对象,它包含共享的属性和方法,可以被对象实例继承。因此,如果一个对象实例需要访问一个属性或方法,它首先会在自己的属性中查找,如果找不到,就会查找继承的原型中是否有。如果还找不到,就会继续在原型的原型中查找,直到找到或者到达原型链的末端(即 null
)。
在这种情况下,[].__proto__.__proto__
和 { }.__proto__
都指向 Object.prototype
。因此,[].__proto__.__proto__ === {}.__proto__
的结果是 true
。
在 JavaScript 中,所有的对象都是一个 Object
的实例,因此它们都继承了 Object.prototype
上的方法和属性。这样,就可以确保所有的对象都有一些通用的方法和属性,如 toString
,hasOwnProperty
等等。同时,它还可以支持面向对象编程中的继承和多态性。