2012-04-16 2 views
0

similar questionが尋ねられましたが、私が満たした条件を満たしませんでした。for..inを使用したJavaScriptプロパティアクセス

プロパティにアクセスするには、ポイント表記法またはかっこ表記を使用できます。 article at jibbering.comも同様であり、これもanswerである。 Specifiacationは同じことを言います。

私はこの例を持っている(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'] = 'bar';'は動作します。 – voithos

答えて

1

いいえ、それは問題のポイント表記の使用です。

ポイント表記を使用しているときに、プロパティ名に変数を使用することはできません。式utils.iは、オブジェクト内のプロパティiにアクセスします。名前には変数iは使用されません。

+0

O、私はこれについて考えなかった。 10x :) – Bakudan

1

ここでutils [i]形式を使用する必要があります。これは、iが文字列であり、use object.property形式を使用して文字列参照を使用してプロパティにアクセスできないためです。

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

obj.'foo' // doesn't work 
obj['foo'] // works 
関連する問題