![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: нет Всего: 137 |
Здравствуйте.
Что-то долго пытался обрисовать тему в словах, но не получилось
Вопрос в том, как избавиться от "obj" в 13-й строке, передав вместо "obj" что-то вроде "this". Или, возможно, мой код принципиально ущербен — тогда посоветуйте правильную структуру. Преполагается, что объектов MyObject будет создаваться много. P. S. По форуму искал, да всё что-то не то Спасибо. Добавлено @ 17:20 var obj = new MyObject("inp", "obj"); не предлагать |
|||
|
||||
| vasac |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1060 Регистрация: 4.5.2006 Репутация: 13 Всего: 36 |
Это сообщение отредактировал(а) vasac - 28.8.2006, 17:50 |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Можно и так:
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: нет Всего: 137 |
vasac, большое спасибо, это работает. Пробовал вчера много способов, и был близок, но немного не дошёл. Теперь осознания языка чтало чуть больше
Sardar, в таком случае тебе вопрос Однажды ты сказал, что «не эффективным с точки зрения потребления памяти выходит код, если методы обьекта дефинировать в конструкторе». Собственно, проникнувшись идеей Когда я писал выше: «Преполагается, что объектов MyObject будет создаваться много», — я намекал на то, что хочу сократить потребление памяти. Действительно ли это имеет смысл? Конечно, это вопрос не про мелкий скрипт, а про более серьёзную систему — скажем, а ля gmail.com, который может работать без перезагрузки страницы часами. Ну и просто по красоте кода и идеологии JavaScript — как правильнее? Память памятью, но лично мне не нравится определение списка функций хэшем, через запятую — как-то неестественно. Просто я не привык? Это сообщение отредактировал(а) dm9 - 29.8.2006, 11:46 |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Всё зависит от реализации JS. Например мозилла на каждый function() {} не "генерит код по новой", а создаёт новый контекст - обьект, который будет нормально удалён сборщиком мусора если на него не осталось ссылок. С другой стороны если взять IE, то он так долго может не протянуть. Проблема в утечке памяти, стоит любому JS обьекту связаться ссылкой с DOM (или любым ActiveX как XMLHttpRequest), то после перезагрузки такой обьект продолжает висеть в памяти и не убираеться пока браузер не закрыть. Если сам обьект ссылаеться на массу других обьектов, в данном случае на массу собственных функций-методов (или контекстов, называй как хочешь), то на лицо утечка памяти, серьёзная утечка. Если помнишь меню в FAQ'e, что я делал, там все ноды раньше создавались сразу после загрузки. С каждой перезагрузкой пауза увеличивалась на 2-3 секунды, памяти по моему с 4-7Мб отьедалось. И так всё висело пока ИЕ не закрыть. Резюмирую: если проект исключительно под ИЕ и должен работать стабильно - выноси всё из конструктора в прототипы, а события связывай через вызов временной анонимной функции (хак, но работает) или через attachEvent. Если тебя претит сама мысль таких ограничений и проект больше под хорошие браузеры - пиши как хочешь Интересно пофиксят ли это баг с утечкой памяти (ещё со времён ИЕ5.0) в ИЕ7.0... -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: нет Всего: 137 |
Сардар, большое спасибо за разъяснения.
Для тех, кто ещё зайдёт: чтобы чуть лучше понять то, о чём сказал Сардар, можно глянуть статью Утечка памяти в IE при использовании анонимных вложенных функций. Там по ссылкам ещё есть статьи, но на английском. Попозже тоже посмотрю. |
|||
|
||||
| Alx |
|
|||
|
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: 10 Всего: 78 |
а зачем return? у меня и без него работает а не имеет ли в таком случае смысл объявить эту переменную первой строкой в описании класса и далее везде писать t вместо this? |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Просто так
Нет, тут идея совсем другая. В основном форуме много размышлений на эту тему, ищи по ключевым "prototype this". -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| giologi |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 31.7.2007 Репутация: нет Всего: нет |
Люди Help... Вот попытался сделать анимацию изображения, у меня ничего не выходит...
Вот код...
Ращитано что сама функция anim() будет анимировать элемент, но либо она не вызиваеться либо я чегото не дописал или просто где-то ошыбка... Т.е. сам задум был чтоб это элемент не только анимировался а и еще плавно анимировался... ПОМОГИТЕ ПОЖАЛУЙСТА... Я в джава скрипте новичек... |
||||
|
|||||
| Zeroglif |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 644 Регистрация: 22.9.2005 Репутация: 28 Всего: 66 |
giologi,
не трогая твою логику, наведу на кое-что: - функция anim не видит t (для простоты/тренировки сделай t глобальной переменной); - к цифрам, которые размеры, добавь px; - отводя мышь, ты возвращаешь пикчеру размер, но setTimeout-то продолжает работать, нужно использовать clearTimeout; - там же надо сбить step на ноль, чтобы анимация всегда начиналась с корректной точки; |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |