2012-04-16 39 views
0

A similar question被問到,但它不符合我遇到的條件。JavaScript的財產訪問與for..in

我知道要訪問一個屬性,我可以使用點符號或括號表示法。一個article at jibbering.com陳述相同,也這answerSpecifiacation也是這樣說的。

我有這樣的例子(fiddle),並是有區別的:

var utils = { 
    myString: "boo", 
    myNumber: 99, 
    justNULL: null 
}; 

for (var i in utils) { 
    document.write (i + " = " + utils.i + "<br/>"); //result - undefined 
    document.write (i + " = " + utils[i] + "<br/>");//result - the actual value 
}​ 

我是缺少在這裏?是否使用for..in或對象的定義?

+0

成員訪問操作符(點)略有不同...後面的任何內容必須是有效的JavaScript標識符。因此,例如,'obj.foo ='bar';'工作,但'obj.123 ='bar';'不,因爲標識符不能以數字開頭。但是,'obj ['123'] ='酒吧';'工作。 – voithos 2012-04-16 06:51:00

回答

1

不,這是使用點符號是問題。

當您使用點符號時,不能使用變量作爲屬性名稱。表達式utils.i將訪問對象中的屬性i,它不會使用變量i作爲名稱。

+0

O,我沒有想過這個。 10倍:) – Bakudan 2012-04-16 06:40:01

1

您需要在這裏使用utils [i]格式,因爲我是一個字符串,並且不能使用字符串引用來訪問使用object.property格式的屬性。

var obj = {}; 
obj.foo = 'test'; 

obj.'foo' // doesn't work 
obj['foo'] // works