Показать сообщение отдельно
  #42 (permalink)  
Старый 28.08.2009, 18:15
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от JSprog
function extend(Child, Parent) { //Создание нового объекта типа функция
Ок, тут понятно.

Сообщение от JSprog
var F = function() { } //Создание нового пустого объекта типа функция
Хорошо, тоже понял. Только, наверное, просто - создание анонимной функции, которая сохраняется в переменную F, да?

Сообщение от JSprog
F.prototype = Parent.prototype //Добавление всех свойств аргумента функции extend parent пустому объекту типа функции
Ничё не понял. Наверное, утановка F.prototype на тот же объект, что и Parent.prototype. А что за .prototype у объектов-функций?

Сообщение от JSprog
Child.prototype = new F() //Добавление всех свойств F (а значит и всех свойств аргумента функции extend parent аргументу той же функции child)
Тоже сложно. Я вижу, что Child.prototype устанавливается в новый объект, порождённый конструктором F (поправь, если не правильно). А зачем это делается?

Сообщение от JSprog
Child.prototype.constructor = Child //поправление свойства constructor чтобы оно сново указывало на child
Ага, тут всё ясно. Только не ясно, зачем этот трюк? И почему "снова"? Оно где-то было "сброшено" или выставлено в другое значение?

Сообщение от JSprog
Child.superclass = Parent.prototype //для удобства создание прямой ссылки на родительский класс особенно удобно при вызове конструктора родителя и если его свойство было перекрыто
Тут тоже понятно.

Два пункта не понял. Может, B~Vladi поможет?

update: у меня реально что-то с письмами сёдня - плохо ходят. Ответ Андрей Параничева так и не пришёл, я его снова не видел, когда писал.
__________________
Тонкости ECMAScript

Последний раз редактировалось Dmitry A. Soshnikov, 28.08.2009 в 18:21.
Ответить с цитированием