Много воды утекло с тех пор, как я последний раз писал в блог, многое изменилось в моей жизни и вообще во мне.
Этот перерыв среди прочего позволил мне пересмотреть свои взгляды на этот блог, а также лучше понять, зачем он мне и что я буду сюда писать.
Изначально я хотел писать сюда всякую хуйню вроде «создание и настройка snippet’ов в редакторе textmate», которая нравилась бы новичкам и «продолжающим», и сюда приходило бы много народу. Тщеславие и все такое, вы понимаете.
Теперь я понял, что, несмотря на привлекательность такой идеи, она мне нравится все же не настолько, чтобы я каждый день писал всякую неинтересную лично мне хуйню. Ну, действительно, если для меня эта тема уже давно пройдена и ничего волнующего в ней нет, то зачем и заморачиваться? Размышляя примерно в таком ключе я пришел к выводу, что правильней будет писать о тех проблемах, решения которых я либо не знаю, либо знаю, но хуевое.
В последнее время я окончательно перекинулся на работу с javascript, и даже уже начал забывать как выглядит java или ruby (чему сильно рад :), так что готовьтесь, большая часть статей будет именно по этим темам: javascript, ria, клиентская оптимизация и прочее и прочее.
Ну и чтобы пост не прошел совершенно порожняком и нес что-нибудь полезное, вот небольшой вопрос-тренировка:
var Queue = function () { var me = this instanceof Queue ? this : new Queue(); me.p = []; return me.add.apply(me, arguments); }; Queue.prototype = { add : function () { var callbacks = A.Array(arguments, 0, true); this.p.splice.apply(this.p,[this.p.length,0].concat(callbacks)); return this; } };
Внимание, вопрос:
что именно делает вторая строка метода add (11 строка примера) и зачем нужна ее запись именно в таком виде.
Ну а также, было бы здорово услышать, зачем, по вашему мнению, нужна такая функция-конструктор и для чего предназначен этот класс.
Очень похоже, что этот класс используется для построения очереди. Помню, когда начинал использовать Ajax в своих проектах была проблема: человек кликал по разным кнопкам и выполнялось несколько действий одновременно (удаление, добавление). Потом я придумал функцию, которая ставила каждый новый запрос в очередь, он то и помог навести порядок)))
@Михаил Бинго! Это объект очередь :)
В нее можно добавить действия, и она гарантирует, что действия будут выполнены точно в том порядке, в котором в нее положены.
Я на днях выложу реализацию, которая помимо указанного тобой функционала, обладает еще двумя особенностями: