2011-10-07 10 views
7

L'autovivificazione ha solo a che fare con le strutture non definite "derefencing", perché in JavaScript se si specifica un indice o una proprietà che non esiste non la creerà dinamicamente? Ma questa non è autovivificazione perché devi dichiarare che la struttura sottostante è innanzitutto un oggetto o un array?Autovivification e Javascript

+1

Questo è il tipo di domanda specifica linguaggio di programmazione che appartiene a [programmers.se]. – zzzzBov

risposta

13

Il namespace è un'area in cui l'autovivificazione potrebbe essere utile in JavaScript. Attualmente a "namespace" un oggetto, devi fare questo:

var foo = { bar: { baz: {} } }; 
foo.bar.baz.myValue = 1; 

Were autovivificazione supportato da JavaScript, la prima linea non sarebbe necessario. La possibilità di aggiungere proprietà arbitrarie agli oggetti in JavaScript è dovuta al fatto che è un linguaggio dinamico, ma non è abbastanza autovivificante.

1

ES6 di Proxy può essere utilizzato per l'attuazione autovivificazione,

var tree =() => new Proxy({}, { get: (target, name) => name in target ? target[name] : target[name] = tree() }); 

prova:

var t = tree(); 
t.bar.baz.myValue = 1; 
t.bar.baz.myValue