簡體   English   中英

在javascript中通過具有多個“節點”的變量訪問對象屬性

[英]access object property by variable with more than one “nodes” in javascript

想象一下這個對象:

var obj = {
             one: {
                two:{
                    three: "whatever"
                }
             }
          }

如果我想訪問“任何內容”,則只需執行以下操作:

console.log( obj.one.two.three ) --> "whatever"

而且我什至可以使用像這樣的變量:

var one = "one"
console.log( obj[one].two.three ) --> "whatever"

但是為什么不起作用呢?

var onetwo = "one.two"
console.log( obj[onetwo].three ) --> undefined

但是為什么不起作用呢?

因為該語言不支持該表示法。 根本不在那里。 該規范將屬性訪問定義為括號表示法

MemberExpression [表達式]

下面幾行中定義了定義工作方式的算法,嵌套屬性的語法根本不是核心語言語法的一部分。

有特定的解析器使您可以執行此操作,並且您始終可以自己調用語言編譯器(例如,JS使您可以通過eval進行此操作-可以),但是用例並不足夠普遍。


注意:自從您在注釋中提到使用Angular以來,它已經使用$parse內置了此功能,而var res = $parse("one.two.three")(obj); 這是一個小提琴。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM