2013-02-06 80 views
-2

我在构建我认为稍微复杂的东西,但是我意识到它不能按照我想要的方式工作,所以我在这里。通过名称获取对象

以下是我正在做的一个例子。

ITEM1: { 
    prop1: 'desc1', 
    prop2: 'desc2', 
}, 
ITEM2: { 
    prop1: 'desc1', 
    prop2: { 
    SUBITEM1: { 
     prop1: 'desc1', 
     prop2: 'desc2', 
     prop3: 'desc3' 
    } 
    } 
} 

现在,这个完美的作品,如果我做了以下

ITEM2.prop2.SUBITEM1.prop1; 

的问题是我不能做ITEM2.prop2.SUBITEM1我需要做的是通过以下方式

ITEM2.prop2["SUBITEM1"].prop1 

项目还很年轻,所以如果整个列表需要重建才能做到这一点,我不介意。

我希望这是有道理的。

+3

什么问题? ITEM2.prop2 [“SUBITEM1”]。prop1应该正常工作 –

+0

我弄不明白。 –

+3

你真的试过了吗? 'ITEM2.prop2.SUBITEM1'完全等同于ITEM2.prop2 [“SUBITEM1”]'。如果你愿意,你甚至可以做'ITEM2 [“prop2”] [“SUBITEM1”]。 –

回答

4

你究竟做了什么?它可以在Chrome中运行。截图为您的信息...

文本表示:

ITEM1= { 
    prop1: 'desc1', 
    prop2: 'desc2', 
}, 
ITEM2= { 
    prop1: 'desc1', 
    prop2: { 
    SUBITEM1: { 
     prop1: 'desc1', 
     prop2: 'desc2', 
     prop3: 'desc3' 
    } 
    } 
} 
Object 
ITEM2.prop2.SUBITEM1.prop1; 
"desc1" 
ITEM2.prop2["SUBITEM1"].prop1 
"desc1" 
+1

谢谢!我会尽快接受。不能相信我忘记去除空间... –

+0

啊,我以前没有看到你的答案。你用'ITEM1 ='代替'ITEM1:',就像我一样。这就是它工作的原因。所以,它不是“这样”。 – bfavaretto

+0

是的。即使我面临相同的语法错误! :P –

0

你想单独的对象吗?我想你错过了var关键字。在这种情况下,你还必须删除你在那里的额外逗号。试试这个:

var ITEM1 = { 
    prop1: 'desc1', 
    prop2: 'desc2', 
}; 
var ITEM2 = { 
    prop1: 'desc1', 
    prop2: { 
    SUBITEM1: { 
     prop1: 'desc1', 
     prop2: 'desc2', 
     prop3: 'desc3' 
    } 
    } 
}; 
console.log(ITEM2.prop2.SUBITEM1.prop1); // Works! 
+0

呃......它没有'var'。 –

+0

不是用逗号。 OP中的代码是无效的语法。 – bfavaretto

+0

It works buddy ... :) –