Q:

access object property by variable with more than one "nodes" in javascript

Imagine this object:
var obj = {
             one: {
                two:{
                    three: "whatever"
                }
             }
          }

If I want to access "whatever" I simply do:
console.log( obj.one.two.three ) --> "whatever"

And I can even use a variable like:
var one = "one"
console.log( obj[one].two.three ) --> "whatever"

But why doesn't this work ?
var onetwo = "one.two"
console.log( obj[onetwo].three ) --> undefined

A:

But why doesn't this work ?

Because the notation is not supported in the language. It's simply not there. The specification defines property access as with bracket notation as:

MemberExpression [ Expression ] 

The algorithm for defining how that works is defined in the lines below, the syntax for nested properties is simply not a part of the core language syntax.
There are specific parsers that let you do this, and you can always invoke the language compiler yourself (JS lets you do that with eval for example - don't though), but the use case is not common enough.

Note:
Since you mentioned in the comments you use Angular, it already has that built in using $parse doing var res = $parse("one.two.three")(obj); Here's a fiddle.

