![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 55 Всего: 137 |
Вот, оно. Лови в репу
![]() |
|||
|
||||
o.s.a. |
|
|||
![]() Xo4y B MocKBy ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.2.2005 Где: Ташкент Репутация: 5 Всего: 15 |
Извините, а скоро будет продолжение? А то очень интересно.
![]() -------------------- Не могу стоять, пока другие работают, пойду полежу. |
|||
|
||||
Гость_12345 |
|
|||
Unregistered |
ЦеННо, но заметил баги в языке интерфейса. Не все слова пишутся с 2 "н". Список замеченных опечаток ниже : ; )
ссылка: http://forum.vingrad.ru/index.php?showtopic=50738 изложенно -> изложено записанны -> записаны вызванна -> вызвана созданна -> создана (3 раза) показанно -> показано |
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Гость_12345 спасибо, исправил.
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
Greendrake |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 364 Регистрация: 14.7.2005 Репутация: нет Всего: 6 |
Откопал обалденную презентацию по сабжу, рекомендую её также всем кому интересна обсуждаемая статья
http://sbnt.jinr.ru/iris/articles/javascript-titov.ppt По теме: объясните мне плиз вот энтот объектно-прототипный синтаксис, который использовал Котеров в своём JSHttpRequest (привожу "каркас" его кода):
Как-то очень всё хитро. Сначала задаётся название головного объекта - JSHttpRequest, после него - () - типа это функция, затем - {} - типа это объект. А затем всё остальное помещается в скобки ( ..... ), внутри которых (разве так можно??) определён прототип всей этой бандуры. А после них на конце ещё (); Круто блин, тоже так хочу уметь ![]() Это сообщение отредактировал(а) Greendrake - 23.1.2006, 00:03 |
|||
|
||||
Zeroglif |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 644 Регистрация: 22.9.2005 Репутация: 28 Всего: 66 |
Пошли по порядку: Строка1: в глобальном контексте объявлена функция с именем JSHttpRequest (обычная function declaration, то есть функция доступна скрипту в любой момент ибо интерпретатор отловил её сразу же). Автоматом создан объект prototype. Судя по пустому телу служит неким пустым классом (это жаргон), который впоследствии явно будет жёстко изнасилован. Больше интересной инофрмации нет. Строка 2: доходит очередь до анонимной функции (тоже в глобальном контексте). Подробнее: - раз у нас анонимная функция, значит нету имени (хе-хе), если нету имени - мы имеем дело с выражением/литералом/FunctionExpression; - чтобы не было в этом сомнений заключаем всё многострочное мясо в скобки, результат выражения вернёт объект самой функции; - если нужно сразу же функцию вызвать - добавляем оператор вызова функции () -проще говоря, конструкция вида:
в своём безымянном представлении и с одновременным вызовом выглядит так:
Строка 4: неизвестно зачем создаём локальную переменную count со значением 0; Строка 6: начинаем насиловать объект JSHttpRequest, к которому добавляем свойство dataReady, на конце живёт анонимная функция с локальными переменными (параметрами), то бишь налицо метод (это жаргон) объекта JSHttpRequest. Строка 10: переопределяем созданный ранее объект prototype на свой собственный, со своими свойствами. Что будет дальше - я понятия не имею, но судя по подготовке начнут плодится экземпляры new JSHttpRequest(), что-нибудь в этом роде. Конец. |
||||||
|
|||||||
Greendrake |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 364 Регистрация: 14.7.2005 Репутация: нет Всего: 6 |
Zeroglif, спасибо, вроде прояснилось.
Не понял, зачем могло понадобиться определять метод dataReady сначала напрямую - JSHttpRequest.dataReady, а потом другим способом - внутри прототипа, с нижним подчёркиванием в начале (кстати что оно означает, для чего служит, и что если без него?): _dataReady: function(text, js) {} Как я понял, переопределяем методы через прототип для того, чтобы потом можно было создавать экземпляры JSHttpRequest, верно? Т.к. если определить просто по типу JSHttpRequest.dataReady, то этот метод присобачится именно к этому конкретному JSHttpRequest, а к его клонам - уже нет? |
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Идея была в том что бы скрыть некоторые локальные переменные "класса", как бы сделать их приватными.
Также обойти в ИЕ утечку памяти при использовании closures, хотя именно в примере её не будет, но это не весь код. JSHttpRequest.dataReady это поле функции (closure) JSHttpRequest, а _dataReady это поле обьектов порождённых от JSHttpRequest, т.е. совершенно разные вещи ![]() -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
Иль |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
Там говорится про перегрузку методов - нет её в JavaScript. Там не перегрузка а переопределение методов -------------------- Ты виндусятник?... А я да. ![]() |
|||
|
||||
regis |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 12.12.2005 Где: Москва, Россия Репутация: нет Всего: 7 |
Sardar, спасибо большое! Попробую разобраться с JS на досуге...
--------------------
В. В чем разница между hardware и software?О. В отличие от второго, по первому можно двинуть кулаком или пнуть ногой. |
|||
|
||||
dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: нет Всего: 137 |
Я прочитал - всё понятно, большое спасибо. Правда, я читаю это после котеровских набл, так что пошло достаточно легко
![]() Например, call(), apply(), arguments, .caller, .callee. О таких вещах узнаёшь как-то случайно, из статей, из обсуждений - сами авторы считают их вещью всем известной и очевидной. Котеров, например, пишет про основы Ява-Скрипта, и считает, что читатель знаком с apply и call. Странно это... (Не наезд, всем авторам в любом случае большое спасибо - это так, пожелание). |
|||
|
||||
Ciber SLasH |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: 24 Всего: 67 |
[offtop]
dm9, а ты качни справочник по JS в моей подписи, и будешь знать какие методы есть у тех или иных объектах (в догонку ещё и WDH не мешало бы скачать). ![]() [/offtop] |
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Сразу забудь тогда про IE5.0- , этот зверь не поддерживает ничего из JS, по сути это почти VBS с изменённым синтаксисом, такой же уровень гибкости. .caller трогать нельзя, теоретической основы под этим не помню, но в JS1.5 (все современные браузеры) он deprecated arguments это весьма логичный способ подойти к аргументам функции, у которой их может быть сколько угодно. Также для простоты забросили туда и остальную инфу типа callee. Жаль что это обьект, а не Array, не хватает многих функций (map, filter и т.д.), которые сами вешаем (камень в огород ECMA) на прототип Array. call и apply выполняют одно и тоже - вызывают функцию в контексте обьекта, только способ передачи аргументов разный. Что бы это понять и грамотно заюзать, потребуеться серьёзно упроситься от классического ООП. Развёртка аргументов круче в Python, хватило бы тогда и одной call функции. В Fortress лучше сделан реверанс в сторону фанатов ООП, которые не всегда понимают "этот метод может быть методом любого обьекта и изменяться динамически". Множества "операций" traits по моему очень красиво и эффективно. По поводу использования, обычно народ решает задачи "привычными" методами, мне например проще так:
Вместо удержания моря глобальных массивов (регистров) или собирать "классы". Как видно, даже самая простая задача не обходиться без расширения интерфейса стандартных обьектов, в частности массива... и очень не хватает человеческого списка, хештаблицы, карты(любой обьект, любой обьект) и многих других вещей. Порой думаю что за это растрелял бы парней ECMA... ![]() P.S. глянул на пост, больше критики на JS чем ожидал... ![]() -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: нет Всего: 137 |
В примере разобрался, спасибо!
Вот это, конечно, для меня странно ![]() function colorFade() colorFade.handles={}; colorFade.resolution = 50; То есть код я понимаю, но я бы стал "собирать класс"... Интересное применение. Буду осознавать ![]()
Скажи, а не существует таких библиотек, которые это всё реализуют? Наверняка кто-то пытался собрать этакий STL для JS. |
|||
|
||||
Ciber SLasH |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: 24 Всего: 67 |
Sardar, я снимаю перед тобой шляпу.
![]() Мне бы так научиться жонглировать в скриптах. Я посмотрел код, разобрался, понял реализацию, но до меня не доходит сам алгоритм работы colorFade-а. Не мог бы ты описать сам алгоритм? |
|||
|
||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |