Суть прототипов
Здравствуйте.
Вопрос общего характера о прототипах и наследовании в JS. Получается, я так понял, что система прототипов представляет из себя набор хэшей , в которые включены указатели на другие хэш-таблицы, те получается, говоря языком из Си/С++, линейный связный список в конце которого null, как и в обычных списках. Правильно я понимаю? |
да, так.
когда хотим взять значение obj.x, то этот "x" сначала ищется в объекте, потом по прототипам, как раз идя по списку. |
я так и понял, те ищем, пока не встретим null
тогда еще один уточняющий вопрос: почему в консоли, при "распечатке" объекта, помимо самого объекта идёт __proto_, а не prototype? из документации я не совсем понял как всё-таки соотносятся __proto__ и prototype. Если это объяснение допускает элементарное изложение, то поясните, плз. |
в терминологии списков из Си/С++, __proto__ - это тот самый "next" - ссылка на след. элемент списка прототипов, нулевой в конце.
А prototype - это ссылка на цепочку прототипов, которая есть в функции. При создании объекта через new у этого объекта __proto__ будет ссылаться на ту цепочку, на которую ссылается prototype у функции (на момент вызова new). function F(){} var obj = new F(); obj.__proto__ === F.prototype; // true |
Часовой пояс GMT +3, время: 14:34. |