code: def perform(self, specifications):
          
          self.enum_list = []
          self.model_list = []
          self.job_commands = filter(lambda attr: attr.name == 'command', specifications.get("job").attributes)[0].allowed_choices
          #Printer.log("job_commands: %s" % (self.job_commands))
              
          self._write_abstract_named_entity()
          
          self.entity_names = [specification.entity_name for rest_name, specification in specifications.iteritems()]
  
          for rest_name, specification in specifications.iteritems():
              self._write_model(specification=specification)
  
          #self._write_generic_enums()
          
          self.write(destination = self.model_directory,
              filename="index.js",
              template_name="model_index.js.tpl",
              class_prefix = self._class_prefix,
              model_list = sorted(self.model_list))
              
          self.write(destination = self.enum_directory,
                      filename="index.js",
                      template_name="enum_index.js.tpl",
                      class_prefix = self._class_prefix,
                      enum_list = sorted(self.enum_list))
                      
          self._write_locales(specifications)
docs: This method is the entry point of javascript code writer. Monolithe will call it when
          the javascript plugin is to generate code.