2011-10-07 14 views
7

JavaScriptは、存在しないインデックスやプロパティを動的に作成しないため、JavaScriptで定義されていない構造を「デリフェンシング」するだけです。しかし、これは自動化ではありません。なぜなら、基になる構造を最初にオブジェクトまたは配列に宣言する必要があるからです。Autovivification and Javascript

+1

これは[programmers.se]に属しているプログラミング言語固有の問題の一種です。 – zzzzBov

答えて

13

名前空間は、自動化がJavaScriptで便利な1つの領域です。現在、「名前空間」目的に、あなたがこれをしなければならない。

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

ではJavaScriptでサポートされているautovivificationたが、最初の行が必要ではないでしょう。 JavaScriptでオブジェクトに任意のプロパティを追加する機能は、動的言語であるためですが、自動化されたものではありません。 ES6のProxyはautovivificationを実装するために使用することができる

1

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

テスト:

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