Быстрые вспоминалки prototype и __proto__ - обьект в JS Вспоминаем обьекты Здесь в памяти всего один обьект у которого value: 17, и на него ссылается обьект a, ссылка b.test, и c.
Это означает что обьект - ссылочный тип данных, и они общаются через ссылки Теперь давай про proto и prototype __proto__ - есть у всех объектов const users = {} // есть __proto__ const ages = [] // тоже есть __proto__ , т.к. массив это объект let age = 17 // Да age это примитив, но если мы к примитиву обращаемся, как к объекту, то в памяти временно создается объектная версия этого примитива и он становиться объектом , и соответственно у него есть __proto__ (Bool, string) // также как и для age
function test() {...} // функция это объект, соответственно у него есть proto
class Aboba() {...} // класс - навороченная функция, следовательно есть proto
Чтобы понимать почему не у всех обьектов равны __proto__ нужно понимать, как они создаются Constructor Любой обьект в JS создается с помощью конс