はこれを試してみてください。
まず、オブジェクトのプロパティは文字列ですが、そのようなネストされた構造にアクセスするためにドット区切りのパスを使用するだけではありません。少なくともネイティブではない。しかし、これのための図書館があります。たとえば、私はdangitの作成者です。この作業には、namespace()
という機能があります。
var item = dangit.namespace(object, 'music.test.test2');
第二には、JavaScriptがそのようなパス表記をサポートしていても、それはおそらく、このように動作します。
object.path
と
object[path]
は非常に異なるものであり、重要な違いがあるためです
var path = 'music.test.test2';
var item = object[path];
。 path
変数を持っていてもpath
というプロパティを要求しているので、object.path
はそれを使用しません。一方object[path]
はpath
変数の値が何であれプロパティを取得します。
第3に、object.music.test.test2
は、提供したデータ構造に存在しません。これについてはconsole.log()
を参照してください。あなたの例では
console.log('music:', object.music);
console.log('music.test:', object.music.test);
、object.music.test
はStringです。また、文字列にはtest2
という名前のプロパティがないため、アクセスしようとするとundefined
が返されます。
投稿されたコードはエラーにはなりませんが、 'object.path'は' undefined'になります。 –
http://eloquentjavascript.net/04_data.htmlと[Access/process(Nested)オブジェクト、配列、またはJSON](http://stackoverflow.com/q/11922383/218196)を参照することをお勧めします。 JavaScriptでオブジェクトがどのように機能するかをよりよく理解できます。 –