Javascript.RU

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

B~Vladi,
Если будешь продолжать общение на форуме в таком ключе (не только в этой теме, а вообще), будет бан.

JSprog,
Эта функция связывает через пустой конструктор конструкторы Child и Parent цепочкой прототипов:
function extend(Child, Parent) {
    // Поскольку мы не можем просто указать Child.prototype = Parent.prototype
    // ведь это просто передаст ссылку на родительский прототип,
    // и редактирование Child.prototype приведет к изменениям и в Parent.prototype.
    // Поэтому мы создадим пустой конструктор:
    var F = function() { }
    // Прототипом которого укажем Parent.prototype (наследуем свойства Parent):
    F.prototype = Parent.prototype
    // А для Child "отнаследуем" этот пустой конструктор (укажем прототипом объект этого конструктора),
    // и теперь редактирование Child.prototype не затронет Parent.prototype:
    Child.prototype = new F()
    // Теперь мы связали Child и Parent, через "пустой" конструктор F,
    // осталось только восстановить ссылку на конструктор для Child:
    Child.prototype.constructor = Child
    // А это просто сахар:
    Child.superclass = Parent.prototype    
}


Еще наверно нужно добавить, что эта функция связывает два конструктора таким образом, чтоб при объявлении прототипом Child объекта Parent, не приходилось вызывать его конструктор, т.е. в стандартном виде:
Child.prototype = new Parent();

Делает тоже самое, но заставляет исполниться конструктор Parent, что, в большинстве случаев, неудобно.
В этом коде мы заменяем Parent на пустой конструктор, который имеет такой же прототип, как и Parent, но при его вызове, не выполняет никакой инициализации.

Последний раз редактировалось Андрей Параничев, 28.08.2009 в 18:17.
Ответить с цитированием
  #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.
Ответить с цитированием
  #43 (permalink)  
Старый 28.08.2009, 18:28
Аватар для JSprog
L
Отправить личное сообщение для JSprog Посмотреть профиль Найти все сообщения от JSprog
 
Регистрация: 16.08.2009
Сообщений: 416

Сообщение от Dmitry A. Soshnikov
Наверное, утановка F.prototype на тот же объект, что и Parent.prototype.
Ну да
Сообщение от Dmitry A. Soshnikov
А зачем это делается?
Потому что F имеет все свойства Parent
Сообщение от Dmitry A. Soshnikov
Оно где-то было "сброшено" или выставлено в другое значение?
Вот тут
Сообщение от Dmitry A. Soshnikov
Child.prototype = new F()
Сообщение от Dmitry A. Soshnikov
Только не ясно, зачем этот трюк?
Чтобы экземпляры обекта содержали правильные свосва constructor
__________________
Лови позитив
Ответить с цитированием
  #44 (permalink)  
Старый 28.08.2009, 18:58
Профессор
Отправить личное сообщение для alexKniaz Посмотреть профиль Найти все сообщения от alexKniaz
 
Регистрация: 14.10.2008
Сообщений: 186

КУРСАНТ - Классная Универсальная Рабочая Сила Абсолютно Не желающая Трудиться
Ответить с цитированием
  #45 (permalink)  
Старый 28.08.2009, 19:02
Профессор
Отправить личное сообщение для alexKniaz Посмотреть профиль Найти все сообщения от alexKniaz
 
Регистрация: 14.10.2008
Сообщений: 186

Нашёл вчера эту фразу в нете....
Ответить с цитированием
  #46 (permalink)  
Старый 28.08.2009, 19:40
Аспирант
Отправить личное сообщение для Ozerich Посмотреть профиль Найти все сообщения от Ozerich
 
Регистрация: 03.08.2009
Сообщений: 33

Сообщение от JSprog Посмотреть сообщение
Админы удалите 4 последних поста включая этот
Я думаю,админы и без тебя разберутся удалять или нет
А тебе советую меньше флудить.Половина,а то и больше,твоих сообщений на этом форуме не имеют смысла,т.е флуд.

А по теме:
Не надо никаких "учителей".Счас ведь не 80-90гг,когда литературу было практически невозможно достать.Сам недавно начал изучать Js и скажу тебе что на этом сайте очень много полезных статей.Читай их попорядку.Примеры пробуй сам писать.Прочитал,написал. Потом изменил код,посмотрел что да как.Что не понятно спрашивай на форуме,излагая вопрос коротко и понятно и без наездов,типа ты тупой а я умный.
Удачи
Ответить с цитированием
  #47 (permalink)  
Старый 28.08.2009, 19:50
Аватар для JSprog
L
Отправить личное сообщение для JSprog Посмотреть профиль Найти все сообщения от JSprog
 
Регистрация: 16.08.2009
Сообщений: 416

Я с этого сайта все статьи прочитал
__________________
Лови позитив
Ответить с цитированием
  #48 (permalink)  
Старый 28.08.2009, 19:54
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

не все, некоторые я успел удалить :-P
__________________
.ня
Ответить с цитированием
  #49 (permalink)  
Старый 28.08.2009, 19:57
Аватар для JSprog
L
Отправить личное сообщение для JSprog Посмотреть профиль Найти все сообщения от JSprog
 
Регистрация: 16.08.2009
Сообщений: 416

А что тя так минусанули?
Влад Влад вот мы все соберёмся и как минусанём тебя
__________________
Лови позитив

Последний раз редактировалось JSprog, 28.08.2009 в 20:00.
Ответить с цитированием
  #50 (permalink)  
Старый 28.08.2009, 19:57
Аспирант
Отправить личное сообщение для Ozerich Посмотреть профиль Найти все сообщения от Ozerich
 
Регистрация: 03.08.2009
Сообщений: 33

Сообщение от JSprog Посмотреть сообщение
Я с этого сайта все статьи прочитал
Если бы ты не тока прочитал но еще и разобрал каждую статью,повторил то что там написано и сделал похожее что то,то ты бы точно не просил "учителя", а сам бы им мог становиться
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу jQuery плагин для создания меню Zeboton jQuery 9 15.09.2014 15:31
Ищу драйвер для Mootools 1.11->1.2 Serg_pnz AJAX и COMET 0 10.06.2009 11:52
Ищу скрипт для вставки на страницу чата Relle Firefox/Mozilla 3 14.05.2009 11:08
Ищу скрипт Niklan Общие вопросы Javascript 5 27.02.2009 12:27