Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 13.06.2016, 12:58
Кандидат Javascript-наук
Отправить личное сообщение для aklis Посмотреть профиль Найти все сообщения от aklis
 
Регистрация: 27.04.2015
Сообщений: 99

Я ж говорю не исполняется код этот в режиме конструктора.
Обратите внимание на сообщение номер 6 этой темы. Строка 11. Если вызвать этот конструктор как обычную функцию, до того как используем Element как конструктор, тогда все сработает. Но в режиме конструктора весь ваш код из Element игнорируется. Честно говоря Element вообще не конструктор, она не назначает свойств объекту.
Ответить с цитированием
  #22 (permalink)  
Старый 13.06.2016, 13:05
Интересующийся
Отправить личное сообщение для pomidor_makaronus Посмотреть профиль Найти все сообщения от pomidor_makaronus
 
Регистрация: 19.04.2016
Сообщений: 18

Кажется понял ответ как всегда на следующей странице):
Хотя свойства и методы, добавленные в прототип, немедленно становятся доступны
во всех экземплярах объектов, при перезаписи всего прототипа наблюдается другое
поведение. Указатель [[ Prototype ]] задается при вызове конструктора, поэтому
изменение прототипа на другой объект нарушает связь между конструктором
и оригинальным прототипом. П омните, у экземпляра есть указатель только на
прототип, но не на конструктор. Рассмотрим следующий пример:

function Person ( ) {
}
var friend = new Person() ;
Person . p rototype = {
constructor : Person ,
name : "Nicholas" ,
age : 2 9 ,
job : " Software Engineer " ,
sayName : function(){
alert ( this.name ) ;
}
} ;
friend.sayName();// ошибка


После этого попробовал
var el = new Element();
			el = new Element();
			el.getTags("div");

Теперь понял эту тонкость. что кстати подтверждает 6-е сообщение. Спасибо!

Последний раз редактировалось pomidor_makaronus, 13.06.2016 в 13:07.
Ответить с цитированием
  #23 (permalink)  
Старый 13.06.2016, 13:05
Кандидат Javascript-наук
Отправить личное сообщение для aklis Посмотреть профиль Найти все сообщения от aklis
 
Регистрация: 27.04.2015
Сообщений: 99

А нет, попробовал - не игнорируется код. Надо думать тогда.
Ответить с цитированием
  #24 (permalink)  
Старый 13.06.2016, 13:08
Кандидат Javascript-наук
Отправить личное сообщение для aklis Посмотреть профиль Найти все сообщения от aklis
 
Регистрация: 27.04.2015
Сообщений: 99

Вот оно что
Ответить с цитированием
  #25 (permalink)  
Старый 13.06.2016, 13:11
Интересующийся
Отправить личное сообщение для pomidor_makaronus Посмотреть профиль Найти все сообщения от pomidor_makaronus
 
Регистрация: 19.04.2016
Сообщений: 18

Просто получается, что перезапись происходит не у __proto__ который взял ссылку у prototype на момент первого создания
а именно у свойства prototype функции Element.
Ответить с цитированием
  #26 (permalink)  
Старый 13.06.2016, 13:17
Кандидат Javascript-наук
Отправить личное сообщение для aklis Посмотреть профиль Найти все сообщения от aklis
 
Регистрация: 27.04.2015
Сообщений: 99

Я кстати разницу так до конца и не понял между __proto__ и prototype.

Вроде как __proto__ это конкретно свойство уже существующего объекта, а prototype это свойство конструктора которое влияет на __proto__ в будущем созданных объектов?
Ответить с цитированием
  #27 (permalink)  
Старый 13.06.2016, 13:20
Интересующийся
Отправить личное сообщение для pomidor_makaronus Посмотреть профиль Найти все сообщения от pomidor_makaronus
 
Регистрация: 19.04.2016
Сообщений: 18

Да я мыслю его также. теперь просто стало понятнее как оно инициализируется.
Ответить с цитированием
  #28 (permalink)  
Старый 13.06.2016, 13:29
Интересующийся
Отправить личное сообщение для pomidor_makaronus Посмотреть профиль Найти все сообщения от pomidor_makaronus
 
Регистрация: 19.04.2016
Сообщений: 18

Сообщение от aklis Посмотреть сообщение
Честно говоря Element вообще не конструктор, она не назначает свойств объекту.
Полностью с этим согласен. никаких this нету.
Да уместнее говорить не о prototype конструктора, а о prototype функции
Element
Ответить с цитированием
  #29 (permalink)  
Старый 13.06.2016, 13:41
Интересующийся
Отправить личное сообщение для pomidor_makaronus Посмотреть профиль Найти все сообщения от pomidor_makaronus
 
Регистрация: 19.04.2016
Сообщений: 18

А вот и картинка поясняющая этот момент Здесь [[ Prototype ]] означает __proto__:
Ответить с цитированием
  #30 (permalink)  
Старый 13.06.2016, 14:09
Кандидат Javascript-наук
Отправить личное сообщение для aklis Посмотреть профиль Найти все сообщения от aklis
 
Регистрация: 27.04.2015
Сообщений: 99

Сообщение от pomidor_makaronus
Здесь [[ Prototype ]] означает __proto__:
В спецификации так же.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать мастер создания памятника ? cosskay Общие вопросы Javascript 0 20.05.2014 17:47
EruditionCMS - веб-приложение для создания и проведения тестирований mbcsoft Ваши сайты и скрипты 0 08.05.2014 13:12
Ищу партнера для создания интернет проекта Zenders Работа 5 28.05.2013 19:31
Поиск и выбор папки с максимально поздней датой создания. Майя Общие вопросы Javascript 1 13.04.2012 16:11
Ищу программиста для сотрудничества, ищу программиста для создания браузерной игры He3HaUKa Javascript под браузер 3 25.04.2011 20:53