![]() |
|
||||||||||
|
|||||
|
Регистрация: Mar 2010
Сообщений: 51
|
Нашёл в исходнике чата для вконтакта нечто подобное
Конечно я уже слегка преобразовал, изначальную версию найти не могу. Хотелось бы подробнее узнать про функцию которая там создаётся. Но ничего не нашёл про это нигде. Это единственный способ создавать функции в Object? Может есть какие-то нюансы использования? Где про это глянуть? Последний раз редактировалось iNils; 13.05.2010 в 06:49. |
|
|||||
|
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Пожалуйста, можно и так:
var myObject:Object = new Object(); myObject.funct = function():void { trace( "lalala" ); } myObject.funct(); var myObject:Object = new Object(); myObject.funct = _funct; myObject.funct(); function _funct():void { trace( "lalala" ); } ![]() |
|
|||||
|
Modus ponens
|
При встрече с автором сего шедевра сделайте ему что-нибудь нехорошее, например пните ногой, или плюньте в лицо. Это ж такую редкосную гадость надо было написать... (а еще для таких вещей есть замечательный сайт - govnokod.ru)
Называется это умными словами "анонимная функция присвоеная свойству динамического объекта" - чем это чревато: - отсутствие нормальной проверки на этапе компиляции. - такие функции будут создаваться по-новой при каждом выполнении функции-обертки. - контекст такой функции можно переопределить в рантайме. - такие функции плохо перевариваются JIT компилятором, если вообще перевариваются. - судя по названию, ее еще и планировалось передать в качестве обработчика какого-то события, а это добавляет ко всему вышеперечисленному проблемы с очисткой памяти.
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Mar 2010
Сообщений: 51
|
Я пока изучаю исходник чата, и экспериментирую в отдельном проекте, удалось имя, фамилию и номер мобилы получить для начала. А поскольку там такое сплошь и рядом, хотелось бы понять принципы. Устал искать описание, и уже готов довольстоваться малым. Спасибо и на этом
![]() Добавлено через 2 минуты Оригинал нашёл _data_provider.request(DataProvider.GET_USER_INFO, { onComplete: function(data) { self._user_info.user_id = data.user_id; self._user_info.user_name = data.user_name; // Make next request after 500 ms delay because of API restriction (3 reqsts per second) setTimeout(function() { self._data_provider.request(DataProvider.GET_SERVER_TIME, { onComplete: function(data) { var current_time = (new Date()).getTime(); self._time_offset = current_time - parseInt(data) * 1000; dispatchEvent(new DataAccessEvent(DataAccessor.INIT)); } }); }, 500); } }); |
|
|||||
|
Modus ponens
|
Если сами не запостите в *****код, то я с радостью это сделаю с вашего позволения, страна должна знать своих героев.
![]()
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Mar 2010
Сообщений: 51
|
Цитата:
loader.addEventListener(Event.COMPLETE, function(e:Event){ var loader:URLLoader = URLLoader(e.target); var data = JSON.decode(loader.data); if (data.error) { options.onError(data.error); } else if (options.onComplete && data.response) { options.onComplete(data.response); } }); Добавлено через 5 минут Не, ну можете постить, но там весь исходник чата такой, у меня волосы дыбом, но понемногу разбираюсь. Похоже сделано чтобы отпугивать новичков от написания приложений для вконтакта )) Сам пару месяцев боялся подступиться, смотрел на код, и выключал через 10 минут. Сейчас перешёл в решительное наступление. Что-то начало получаться, методом тыка. Но хочется каждую непонятную ситуацию выяснить, чтобы набраться знаний и опыта. Прежде чем сюда задавать вопрос, прошерстил несколько книг на предмет такой темы, и погуглил, информации нашёл маловато. Даже здесь я уже больше узнал, в этой теме. Спасибо. |
|
|||||
|
Modus ponens
|
Класс занимает ничтожно мало места по сравнению с тем, сколько это ***** отъест потом места в памяти, если вообще не поломается до того, как достигнет критических размеров. Тут на лицо человек, который никогда в жизни на AS3 ничего не писал, а делал каие-нибудь *****сайты на яваскрипте (и возможно немного PHP). Конечно, обстоятельства могут быть разными, и если это код начинающего / любителя, за который никто не платил и т.д. - то, ну, как бы и ладно, но если за это кто-то хоть копейку заплатил - то оно того явно не стоило
![]() Рефакторить - ну, в первую очередь вытащить все функции из других функций и сделать их методами класса, включить strict mode + все предупреждения и исправлять то, что компилятор найдет... PS. Замыкание в ОО языках не имеет никакого смысла. Для того, чтобы оно имело практический смысл, нужен другой подход и другое окружение... Тут нет никаких возможных скрытых причин и оправданий, просто откровенное ***** в чистом виде.
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 12.05.2010 в 22:10. |
|
|||||
|
Регистрация: Mar 2010
Сообщений: 51
|
Оно лежит Вконтакте, в группе "ВКонтакте API ", как один из образцов
Цитата:
|
|
|||||
|
Регистрация: Mar 2010
Сообщений: 51
|
Цитата:
![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 15:34. |
|
|
« Предыдущая тема | Следующая тема » |
|
|