Creare namespace con Prototype

Martedì 5 Febbraio 2008 - 08:14

di Riccardo Degni

Scripting

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;

Tags:

Categoria: Scripting | Permalink

Commenti

1

… io non ho capito :(

# - postato da maurizio - 05 Febbraio 2008 - 09:35

2

Che ficata! Comodissimo!

# - postato da Federico - 05 Febbraio 2008 - 14:11

Inserisci il tuo commento:





(puoi usare i seguenti tag HTML per formattare il testo -
a href, b, i, br/, p, strong, em, ul, ol, li, blockquote, pre):

 

Anteprima del commento