• Как избавиться от bind в javascript-либах?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Могут ли помочь promise или даже просто события/observer?

    Чта? Это тут причем?

    Неужели в javascript все надо делать на событиях

    Опять же, чта? Почитайте... не знаю... про лямбда исчисления, функциональное программирование... При чем тут ивенты? В вашем примере мы явно задаем контекст функции посредством каррирования:

    _.bind = function (fn, context) {
        
        return function () {
            return fn.apply(context, arguments);
        };    
    };

    Это позволяет нам внутри функции отвязаться от внешней области видимости и быть уверенным что у функции верный контекст. Вдруг вы решите потом поменять ваш self = this на self = undefined или сменить self на that... мало ли... Меньше связанности - больше счастья.

    Когда же писать линейный код а когда декомпозировать?

    Линейный там где нужен линейный код, а событийную модель - при взаимодействии с вводом/выводом, так как оно должно быть асинхронным. Вообще все эти замуты с колбэками и принципы по которым происходит "декомпозиция" учитывают такую штуку как event-loop. В любом случае это не относится к предмету вопроса из заголовка.

    Разберитесь с тем как работает javascript и будет вам счастье.

    p.s. А вы на чем пишите что такие вопросы задаете? Удовлетворите мое любопытство.
    Ответ написан
    1 комментарий
  • php interactive mode

    zarincheg
    @zarincheg
    Вот решение проблемы habrahabr.ru/post/198886
    Ответ написан
    Комментировать