Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Суть прототипов (https://javascript.ru/forum/misc/71199-sut-prototipov.html)

Luca 01.11.2017 18:03

Суть прототипов
 
Здравствуйте.
Вопрос общего характера о прототипах и наследовании в JS.
Получается, я так понял, что система прототипов представляет из себя набор хэшей , в которые включены указатели на другие хэш-таблицы, те получается, говоря языком из Си/С++, линейный связный список в конце которого null, как и в обычных списках.
Правильно я понимаю?

Alexandroppolus 01.11.2017 18:07

да, так.

когда хотим взять значение obj.x, то этот "x" сначала ищется в объекте, потом по прототипам, как раз идя по списку.

Luca 01.11.2017 18:22

я так и понял, те ищем, пока не встретим null
тогда еще один уточняющий вопрос:
почему в консоли, при "распечатке" объекта, помимо самого объекта идёт __proto_, а не prototype? из документации я не совсем понял как всё-таки соотносятся __proto__ и prototype. Если это объяснение допускает элементарное изложение, то поясните, плз.

Alexandroppolus 01.11.2017 18:44

в терминологии списков из Си/С++, __proto__ - это тот самый "next" - ссылка на след. элемент списка прототипов, нулевой в конце.

А prototype - это ссылка на цепочку прототипов, которая есть в функции. При создании объекта через new у этого объекта __proto__ будет ссылаться на ту цепочку, на которую ссылается prototype у функции (на момент вызова new).

function F(){}

var obj = new F();

obj.__proto__ === F.prototype; // true


Часовой пояс GMT +3, время: 00:51.