// codeart.ru / Теория программирования / JavaScript. Техника программирования с использованием флагов. Форум

JavaScript. Техника программирования с использованием флагов. rss подписка

Автор: Evgeniy Sergeev

Программирование на JavaScript имеет один серьезный недостаток — необходимо постоянно думать о совместимости в различных версиях браузера. Очень часто, приходится писать несколько вариантов реализации одного и того же алгоритма. Проверять каждый раз под каким браузером запущен код — занятие нелепое! Удобно в начале выполнения скрипта определить флаги, по которым определять поддерживает браузер то или иное свойство, например, чтобы определить поддерживает ли браузер DOM, вводим такой флаг:

  1. CakePHP. Как создать модуль без привязки к таблице в базе данных
  1. а действительно ? зачем они ставятся скобки то??
    никогда раньше при такой нотации их не ставил, работало нормально, объясните если не трудно?

  2. Скобки ставятся для того, чтобы неявно заданная функция сразу выполнилась. Обратите внимание, что в функции стоит return, т.е. флагу присовется не функция, а значение которое вернется в результате работы.

    Приведу пару примеров:

    1 Значение функции определяется один раз:

    var FLAGS = {
    s1: function(){return 'Flag S1';}()
    }

    alert(FLAGS.s1);
    alert(FLAGS.s1);
    alert(FLAGS.s1);

    2. Значение функции пересчитывается каждый раз:

    var FLAGS = {
    s1: function(){return 'Flag S1';}
    }

    alert(FLAGS.s1());
    alert(FLAGS.s1());
    alert(FLAGS.s1());

  3. простите но нафига такие сложности со скобками? Ну если бы нужно было не сразу значение вычислить а только при первом вызове, хотя всеравно сработает сразу…
    var FLAGS = {
    ‘w3’: !!(document.getElementById && document.createElement),
    ‘ie’: !!window.ActiveX
    };

    и никаких излишеств. Ключ хеша лучше как строку передавать, а то вдруг у Вас переменная с таким именем есть… будете мучительно искать ошибку :)

  4. 1. Для простых выражений действительно неоправдано использовать функции, но хотелось сделать акцент как раз на возможность присвоения результата выполнения функции.
    2. При определении хеша, на сколько я знаю, путаницы быть не должно, но при обращении к хэшу возможна ошибка. Поясняющий пример:


    var ie = 'w3';

    var FLAGS = {
    ie : true
    }

    FLAGS[ie] = false;

    alert(FLAGS[ie]);
    alert(FLAGS.ie);
    alert(FLAGS['ie']);

    3. Не совсем понятно, что Вы хотели сказать фразой: «…хотя всеравно сработает сразу…»

  5. А где об этом можно почитать поподробнее? Не явно и не до конца понятно.

  6. RayZ, можешь задать конкретный вопрос, что не понятно? Так как я не могу назвать конкретный источник где можно прочитать более подробно!

Leave a Reply

« »