![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: 1 Всего: 15 |
Вот этот код написан внутри head'а Кто скажет почеу вызов this.loadImages(); is not a function получит плюсик! PS Сорри парни если это все спрашивалось уже и отвечалось, но я не нашел. -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| skyboy |
|
||||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 10 Всего: 260 |
на что ссылается this в функции? ты же цепляешь loadImages как метод к объекту(через prototype), а присоединяешь объект уже как функцию... может, надо так
Добавлено через 1 минуту и 41 секунду нет, сглупил. this указывает на window. Вот попробуй запустить в консоли:
Получишь [bject Window] |
||||
|
|||||
| butionok |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 19.1.2005 Репутация: 1 Всего: 3 |
skyboy,
У меня [Object]. По моему this указывает на саму функцию a0. Можно проще: window.onload = function(){ImageLoader()}; Это сообщение отредактировал(а) butionok - 13.4.2007, 20:24 --------------------
Ненавижу убогую Оперу. |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Ничего не измениться, this будет указывать на window. Почему так уже много раз я с Zeroglif обсуждали. Royan, что конкретно нужно сделать? Если использовать function(){ new ImageLoader(); }, то код будет работать, но смысла нет создавать объект. Если нужно просто вызвать ImageLoader, то создавай локальные переменные (var) и взывай loadImages как arguments.callee.prototype.loadImages хотя каков смысл класть её в прототип? Если просто опишешь что нужно сделать (как можно более абстрактно, а не какой код ты хочешь получить), то придумаем элегантное решение. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: 1 Всего: 15 |
Всем спасибо за высказанные мысли, постараюсь прояснить ситуацию.
Я перейду на язык ООП хотя бы он и не совсем применим к JS. Я пытался создать класс ImageLoader в конструкторе которого хотел вызвать метод loadImages Хотя не совсем понимаю природу почему в приведенном выше примере this указывает на объект window, но аналогичная же ошибка возникает если просто поставить вызов ImageLoader() в конце всего кода или прописаеть его в событие onLoad в теге BODY. Сейчас все, что мне нужно это просто вызвать метод из объекта. -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Потому что вызываешь ты функцию как просто функцию, в таком случае ты вызываешь её как global.функция() (метод global), следовательно и this указывает на global. В бродилке объектом global является window (механизм за этим немного другой, но результат не меняется). Вызов new ImageLoader() создаст новый объект и this будет указывать на него, всё что лежит в прототипе будет доступно. Спорным минусом такого подхода может быть то, что объект после не используется и сразу же убивается сборщиком мусора. Рвение к "чистому ООП" конечно похвально, но в глупости это всё превращать тоже не стоит. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: 1 Всего: 15 |
Воспользовавшись советом переписал код так
-------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| Alx |
|
|||
|
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: 10 Всего: 78 |
а нафика 2 раза вызывать imgLoader.loadImages() ?
|
|||
|
||||
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: 1 Всего: 15 |
Прошу прощения атавизмы:
-------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |