ооп на javascript и это

#oop #javascript-framework #javascriptmvc

#ооп #javascript-фреймворк #javascriptmvc

Вопрос:

Учитывая следующий код:

 JE.events = {
  self: this,
  controller: {
    init: function(){            
        $(".monthheader").click(function () { 
            JE.events.model.get($(this).attr('title')); 
            return false;
        });

        return this;
    }
  },

  model: {
    get: function(monthnum){
        ...
    }
  }
  

}

Как бы я заменил вызов на

 JE.events.model.get(..);
  

чем-то вроде

 self.model.get(..);
  

Весь код более или менее соответствует этой сути https://gist.github.com/966270 . Идея состоит в том, чтобы создать действительно простой MVC в js (моя первая попытка), который я мог бы легко использовать. Улучшения приветствуются!

Ответ №1:

 JE.events = (function {
  // Create closure

  // Declare controller and model as local
  var Controller = {
    init: function(){            
        $(".monthheader").click(function () { 
            Model.get($(this).attr('title')); 
            return false;
        });

        return this;
    }
  }

  var Model = {
    get: function(monthnum){
        ...
    }
  }

  // return object thats assigned to JE.events
  return {
    controller: Controller,
    model: Model
  }

)();
  

Возможно, вы также захотите взглянуть на backbone или позвоночник, которые являются облегченными фреймворками MVC.

Они дают вам несколько простых абстракций и много контроля. Там тоже маленькие и простые.

Если бы мне пришлось писать фреймворк micro MVC с нуля, он сходился бы либо к backbone, либо к spine, поэтому, возможно, было бы лучше использовать один из этих двух.