2013-05-07 87 views
0

我需要訪問如何訪問一個動態屬性:對象名{}可變

objectName.myID 

而且是動態生成的「身份識別碼」的部分..

我如何做到這一點?

我試圖

this['objectName.'+ variable] 

我討厭使用eval ...

PS 這發生在的方式的函數(局部範圍)..

+0

對不起,但這是非常基本的jQuery,你甚至不似乎是接近。提示:'$(「#foo」)' – 2013-05-07 07:12:20

+2

@Álvaro對不起,Alvaro,但顯然你甚至沒有接近答案... – Christoph 2013-05-07 07:25:33

+0

@Christoph - 那麼,你的編輯已經改變了這個問題的含義不少;-) – 2013-05-07 07:43:43

回答

2

您可以訪問Object properties in two ways

o.propertyname 
//or 
o.["propertyname"] 

當使用括號符號,你必須把引號PROPERTYNAME否則將被視爲一個變量名稱(在你的情況下正是你想要的)。所以你的情況,你所儲存的屬性作爲字符串的名稱,要走的路是:

var variable = "propertyname"; 
o[variable]; 
/* /\ variable is replace with it's string representation "propertyname" */ 

你甚至可以調用的方法是這樣的:

var o = {}; 
var functionname = 'toString'; 
o[functionname](); 

你可以混合使用兩種符號,你的例子看起來像:

var obj = 'objectName'; 
var prop = 'myID'; 
this[obj][prop] 
// or this is possible too: 
this.objectName[prop] 
+0

嗯我以爲我試過這個,它沒有工作..生病再試一次.. tnx一堆 – BrownChiLD 2013-05-07 12:15:41

1

假設propertyName是一個變量的名稱保存着屬性的名稱,例如'myId',那麼你可以使用。

objectName[propertyName] 

更多細節在MDN:Working with objects

+0

對不起,但它仍然錯 - 它應該是'objectName ['propertyName']'... – Christoph 2013-05-07 07:30:50

+0

@Christoph我不同意。如果propertyName是一個包含屬性名稱的變量,如果該名稱是動態的,則應該是這種情況,那麼這是正確的語法。 – 2013-05-07 07:32:02

+0

隨着您的評論添加,意圖是明確的。然而,就目前而言,你的回答意味着'propertyName'是屬性的名稱而不是一個變量,所以這是非常具有誤導性的。如果你想讓它成爲一個社區wiki,你的答案應該是堅如磐石的,而不是像目前那樣含糊不清。 – Christoph 2013-05-07 07:35:53