25 янв. 2013 г.

Отказ от глобальных функций в Javascript

Js очень располагает к одному глобальному контексту. Но мы то знаем, что в большом приложении нужна модульность, нужны простые изолированные контексты. Поэтому вспомните ООП: изолируйте логику в отдельные классы, а не размазывайте ее по десяткам глобальных функций, которые можно вызвать откуда угодно, и которые всегда можно случайно перекрыть создав функцию с тем же именем.
Пример изоляции логики в «классе»:
/**
* Это javadoc для описания класса
* @param {String} str - а это описание параметра конструктора
*/
NoteDocument = function(str){
    
    //удобная ссылка на сам объект
    var self = this;
    
    //внутреннее поле
    var data;
    
    //публичный метод
    this.init = function(){
        parse(str);
    };

    //внутренний метод
    function parse(str){
        ...
    }

};
Как выглядит создание экземпляра:
var doc = new NoteDocument("hello!");
doc.init();