JavaScript中的原型链:判断[]和{}的__proto__.__proto__是否相等,请解释为什么结果是什么样的【附代码】

4 min read

在 JavaScript 中,每个对象都有一个特殊的属性 __proto__,表示该对象的原型。原型是一个对象,它包含共享的属性和方法,可以被对象实例继承。因此,如果一个对象实例需要访问一个属性或方法,它首先会在自己的属性中查找,如果找不到,就会查找继承的原型中是否有。如果还找不到,就会继续在原型的原型中查找,直到找到或者到达原型链的末端(即 null)。

在这种情况下,[].__proto__.__proto__{ }.__proto__ 都指向 Object.prototype。因此,[].__proto__.__proto__ === {}.__proto__ 的结果是 true

在 JavaScript 中,所有的对象都是一个 Object 的实例,因此它们都继承了 Object.prototype 上的方法和属性。这样,就可以确保所有的对象都有一些通用的方法和属性,如 toStringhasOwnProperty 等等。同时,它还可以支持面向对象编程中的继承和多态性。