I think you are mistaken Object.__proto__ for Object.prototype .
Object.prototype.__proto__ indeed null because Object does not extend anything.
Object itself, however, is a function - aka. Function instance.
Because Function extends Object , the prototype has the __proto__ property.
That way you can traverse more than Object.__proto__.__proto__ to reach Object.prototype , in fact:
Object.prototype === Object.__proto__.__proto__
source share