Почему объект. прото. proto not null?

мое понимание заключается в том, что Object.__proto__ является прототипом объекта "верхнего уровня" в javascript. Я бы кроме ее __proto__ быть null, но в Google Chrome (не пробовали другие браузеры), это не так. Почему так?

редактировать

Я знаю, что следующее изображение, вероятно, является повторным хэшем приведенного ниже, но я сделал это сам, чтобы проверить свое понимание. С ним что-то не так? enter image description here

2 ответов


Object - Это функция, это __proto__ является пустой функцией function() {}. Корневой объект является пустым объектом {}, а не Object. Итак, когда у вас есть такой объект, как {foo:1, bar:1} его отношения выглядят так:

enter image description here


я думаю, вы ошибаетесь Object.__proto__ на Object.prototype.

Object.prototype.__proto__ действительно null, потому что Object ничего не продлить.

Object сам по себе, однако, является функцией - ака. пример Function.
С Function выходит Object, это прототип имеет __proto__ собственность.
Таким образом, вы можете сделать крюк Object.__proto__.__proto__ до Object.prototype по сути:

Object.prototype === Object.__proto__.__proto__ // should yield true