2012-02-18 53 views
0
var x = {}; 
x.a = {y:5}; 
x.b = {z:6}; 

for (prop in x) console.log(typeof prop); // returns "string". Why not "object"? 

オブジェクトを返してはいけませんか?これをどうやって回避するのですか?オブジェクトの代わりにJavaScript文字列

+0

あなたは 'prop'が何であるかを見てください。http://jsfiddle.net/NnLrh/1/ –

+0

[いくつかのドキュメント](https://developer.mozilla.org/ja/JavaScript/Reference/Statements/for...in)を読むのはいかがですか? –

答えて

1

プロップ自体を出力すると、キーが「a」、「b」であることがわかります。

+0

どういう意味ですか? – user1019031

+0

ループ内に 'prop'が入る値は、文字列" a "、文字列" b "です。 –

+0

しかし、 "a"がオブジェクトのときに文字列を取得するのはなぜですか? – user1019031

0

プロパティの名前を返します。

0
x[prop]部分はaとbの場合のために、返された、 propと呼ばれ、プロパティ名を取ります(これはString型である)とプロパティ x.propを返し

for (prop in x) console.log(typeof x[prop]); 

にあなたの最後の行を変更

オブジェクト。

1

これらの応答のすべては右ですが、おそらくあなたは正しい例とのより良いそれを見ます:

var x = {}; 
x.a = {y:5}; 
x.b = {z:6}; 

for (prop in x) console.log(typeof prop); // returns "string" 
for (prop in x) console.log(prop); // returns "a", then "b" 
for (prop in x) console.log(typeof x[prop]); // returns "object" 
for (prop in x) console.log(x[prop]); // returns {y:5}, then {z:6} 
+0

ああ、ありがとう!ちょうど私がそれの周りに私の頭を得るために必要なもの。 – user1019031

関連する問題