Do you as a Javascript developer
  consider the traditional Design
  Patterns as important or less
  important than they have been with
  other languages / environments?.
 Gli schemi di design classici non si applicano a JavaScript. 
 Ciò che è applicabile è scrivere codice modulare e funzionale. 
 Dovresti utilizzare una combinazione di costruttori e funzioni di prima classe. 
 Come sviluppatore JavaScript, personalmente spingo verso il trattamento di JavaScript come LISP piuttosto che Java. Quindi cerca di emulare monadi e codice di stile funzionale di alto livello piuttosto che provare a emulare il codice OOP classico. 
  Please name the top three design
  patterns you, as a Javascript
  developer use regularly and give an
  example of how they have helped in
  your Javascript development.
 Anche in questo caso i pattern di design non si applicano molto ma sotto ci sono tre costrutti importanti. 
-  Uso delle chiusure 
-  Uso di funzioni di prima classe 
-  Uso di fabbriche oggetto con o senza   new
 Per favore lascia un qualche tipo di contesto per il quale posso mostrare esempi di questo tipo di tecniche rispetto a fare lo stesso tipo di codice usando schemi di design tradizionali. 
 Diamo un'occhiata ad alcuni dei classici  Design Patterns  e a come implementarli in js, nonché a modelli alternativi più adatti a js stesso: 
  Pattern osservatore:  
 In   node.js    questo è semplicemente   events.EventEmitter   . In   jQuery    questo è   $.fn.bind    & & %codice%. In   $.fn.trigger    questo è   backbone    e   Backbone.Events.trigger   . Questo è un modello molto comune utilizzato nel codice giorno per giorno. 
 Non mi fermo mai e penso "Hey sto usando uno schema di osservatori qui!". No, questo è solo un modo di livello basso per trasmettere messaggi in giro o un modo per cambiare a cascata. 
 Ad esempio in backbone tutte le viste MVC si associano ai modelli   Backbone.Events.bind    event, quindi la modifica del modello comporta la sovrapposizione automatica di eventuali modifiche alla vista. Sì, questo è uno schema potente, ma il suo uso è così comune nella programmazione guidata dagli eventi che non si stavano rendendo conto di averlo utilizzato ovunque. 
 Nel prototco   onchange    abbiamo   WebSocket    che usiamo per associare agli eventi   .on   . Di nuovo questo è molto comune ma è un osservatore su uno stream piuttosto che il tuo classico OOP basato su   on("message", ...   . 
 Questi sono tutti usi potenti del modello di Osservatore. Ma questo non è uno schema che usi. Questa è una parte semplice della lingua. Questo è solo codice. 
  Memento Pattern:  
 Questo è semplicemente JSON. Permette di serializzare lo stato di un oggetto in modo da poter annullare un'azione. 
function SomeObject() {
    var internalState;
    this.toJSON = function() {
        return internalState;
    }
    this.set = function(data) {
        internalState = data;
    }
    this.restore = function(json) {
        internalState = JSON.parse(json);
    }
}
var o = new SomeObject();
o.set("foo"); // foo
var memento = JSON.stringify(o);
o.set("bar"); // bar
o.restore(memento);
 In JavaScript supportiamo nativamente un'API per i ricordi. Basta definire un metodo chiamato   while (byte b =  Stream.ReadNextByte())    su qualsiasi oggetto. Quando chiami   toJSON    chiamerà internamente   JSON.stringify    sul tuo oggetto per ottenere i dati reali che desideri serializzare su JSON. 
 Questo ti permette di creare istantaneamente il tuo codice. 
 Ancora una volta non mi rendo conto che questo è un modello di memento. Questo è semplicemente utilizzando lo strumento di serializzazione che è JSON. 
  Pattern stato / modello di stato:  
 Non hai bisogno di uno schema di stato. Hai funzioni di prima classe e tipi dinamici. Basta iniettare funzioni o modificare le proprietà al volo.