• Как часто используются дескрипторы, декораторы и bind, call, apply?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Обо всем по порядку

    Дескрипторы - так понимаю речь идет о дескрипторах свойств объекта. Вещь крайне полезная, позволяющая задать поведение свойству, сделав его не перечисляемым или, например, только для чтения, а так же можно задать функции getter/setter, которые будут вызываться при чтении/записи свойства. Используется довольно часто.

    Декораторы функций. Позволяют избежать дублирования кода. Допустим, подключаете Вы некую библиотеку, в которой есть некоторая функция, Вам необходимая. Пусть она делает некое действие А, но Вам регулярно нужна последовательность действий А и Б. Тогда Вы пишите над этой функцией обертку, выполняющий эту последовательность, и уже вместо библиотечной функции + действие Б используете везде свою обертку. А вот если у Вас таких оберток с действием Б довольно много, то уже нужен декоратор, который позволит создавать такие обертки для любой функции. Используется как правило в крупных проектах, так как снижает вероятность ошибок.

    bind - по сути является декоратором встроенным в язык. Позволяет привязать к функции контекст и начальные аргументы. Используется постоянно, особенно в случае передачи функции во внешний код.

    call и apply позволяют вызвать функцию с нужным контекстом, разница в том что apply принимает 2 аргумента - контекст и массиво-подобный объект содержащий аргументы, а call принимает произвольное число аргументов: 1й - контекст, последующие передаются как аргументы функции. Используется постоянно.

    Карринг. Хоть и используется не так часто, но бывает весьма полезным инструментом. По сути цепочки промисов построены на принципах карринга, только не функций, а объектов.

    Ну и напоследок, конструкция var self = this; позволяющая сохранить контекст в замыкании уже потихоньку уходит в прошлое, благодаря стрелочным функциям из es2015
    Ответ написан
    1 комментарий
  • Книгу по Javascript?

    megamops
    @megamops
    1. Флэнаган, 6-е издание. Самая лучшая и правильная книга. Лидирует с огромным отрывом от всех остальных, вместе взятых. На русском пока не было и неизвестно, будет ли вообще: издательство «Символ», которое собиралось её выпускать, накрывается медным тазом.

    2. Крокфорд, бывает по-русски в сносном переводе.

    3. По желанию — Стефанов.

    4. Книга Резига лично мне не понравилась; по-моему, автор дудит в какую-то свою дуду и извращает высокие идеалы истинного JavaScript. Впрочем, это моё субъективное впечатление.

    И самое главное — ни в коем случае не читать книги русских авторов. Не только по JavaScript, но и на любые компьютерные темы. Одна-единственная книжка отечественного автора способна так засрать мозг, что потом не поправить десятком других, правильных книжек.

    А если кто-нибудь вам советует книги русских авторов — не водитесь больше с этими людьми, а то заразитесь от них и умрёте (как специалист) в страшных профессиональных мучениях.

    Что касается онлайн-учебников и прочих ресурсов в Интернете — там 5 % пользы и 95 % говна. Их можно читать, только если вы уже умеете сами отличать говно от пользы. Иначе — см. предыдущий абзац.
    Ответ написан
    1 комментарий