Link copiato negli appunti
Leggendo questo articolo ho trovato uno snippet scritto per Prototype (ma che può essere facilmente integrato in qualsiasi tipo di applicazione), che fa uso del metodo Enumerable:inject, davvero utilissimo.
In pratica, permette di creare proprietà di oggetti complessi, semplicemente richiamando la funzione personalizzata namespace applicata all'oggetto String.
Vediamo un esempio pratico per capire meglio. Vogliamo creare :
var wrap = { prop: { inn: { sub: "l'ultima proprietà " } } } // In questo modo abbiamo creato un oggetto che contiene un oggetto, che a sua volta ne contiene un altro e cosi via. // Sembra complicato, ma non è raro avere l'occorrenza di creare qualcosa del genere. // ora richiamiamo la proprietà e otterremo il valore "l'ultima proprietà ": wrap.prop.inn.sub;
àˆ inutile dire che scritto cosi è molto incatenato e difficilmente leggibile. A questo proposito nasce la funzione namespace, che permette di svolgere le seguente operazione:
// il separatore di default è "." 'wrap.prop.inn.sub'.namespace(); // ora richiamiamo la proprietà e otterremo il valore "l'ultima proprietà ": wrap.prop.inn.sub;
Ovviamente è possibile divertirsi creando proprietà di oggetti esistenti e personalizzati (e utilizzando il separatore desiderato):
'MY_AWESOME_APPLICATION::util::DOM::dimensions'.namespace('::'); // true 'dimensions' in MY_AWESOME_APPLICATION.util.DOM;