Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.11.2017, 18:03
Аспирант
Отправить личное сообщение для Luca Посмотреть профиль Найти все сообщения от Luca
 
Регистрация: 20.06.2017
Сообщений: 69

Суть прототипов
Здравствуйте.
Вопрос общего характера о прототипах и наследовании в JS.
Получается, я так понял, что система прототипов представляет из себя набор хэшей , в которые включены указатели на другие хэш-таблицы, те получается, говоря языком из Си/С++, линейный связный список в конце которого null, как и в обычных списках.
Правильно я понимаю?
Ответить с цитированием
  #2 (permalink)  
Старый 01.11.2017, 18:07
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

да, так.

когда хотим взять значение obj.x, то этот "x" сначала ищется в объекте, потом по прототипам, как раз идя по списку.
Ответить с цитированием
  #3 (permalink)  
Старый 01.11.2017, 18:22
Аспирант
Отправить личное сообщение для Luca Посмотреть профиль Найти все сообщения от Luca
 
Регистрация: 20.06.2017
Сообщений: 69

я так и понял, те ищем, пока не встретим null
тогда еще один уточняющий вопрос:
почему в консоли, при "распечатке" объекта, помимо самого объекта идёт __proto_, а не prototype? из документации я не совсем понял как всё-таки соотносятся __proto__ и prototype. Если это объяснение допускает элементарное изложение, то поясните, плз.
Ответить с цитированием
  #4 (permalink)  
Старый 01.11.2017, 18:44
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

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

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

function F(){}

var obj = new F();

obj.__proto__ === F.prototype; // true
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление локальных переменных, наследование без прототипов ryslan-yc Общие вопросы Javascript 2 29.01.2017 19:54
Тонкости создания прототипов pomidor_makaronus Общие вопросы Javascript 30 13.06.2016 14:11
Суть фреймворка Lynatik Events/DOM/Window 17 09.10.2012 11:36
Суть настоящего программиста Session Оффтопик 104 17.12.2011 00:15
Расширение прототипов встроенных обьектов: хорошо или плохо? hogart Общие вопросы Javascript 51 14.08.2009 11:56