2011-10-07 7 views
7

Czy autoworyzacja ma tylko związek z "derefencją" niezdefiniowanych struktur, ponieważ w JavaScript, jeśli określisz indeks lub właściwość, która nie istnieje, czy dynamicznie go nie utworzysz? Ale czy to nie jest autoworyzacja, ponieważ musisz zadeklarować podstawową strukturę, aby najpierw była obiektem lub tablicą?Autowikwidacja i JavaScript

+1

Jest to rodzaj pytanie konkretnego języka programowania, który należy na [programmers.se]. – zzzzBov

Odpowiedz

13

Wyznaczanie nazw jest jednym z obszarów, w którym autoworyzacja może być przydatna w JavaScript. Obecnie do "nazw" obiektu, trzeba to zrobić:

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

Were autovivification obsługiwane przez JavaScript, pierwsza linia nie byłaby konieczna. Możliwość dodawania dowolnych właściwości do obiektów w JavaScript jest spowodowana tym, że jest dynamicznym językiem, ale nie jest całkowicie autoworyzowana.

1

ES6 na Proxy mogą być wykorzystane do realizacji autovivification,

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

Test:

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