2016-12-10 2 views
0

Iはは、関数に渡さ

var obj { 
    "1234": {"example": "sample"}, 
    "5678": {"example": "sample"} 
}  

function example(num, str) { 
    if obj[num].hasOwnProperty(str) { 
     //manipulate property 
    } 
    return obj; 
} 

その後関数を呼び出し、

obj(1234, "example") 

はなぜ代わりのOBJ [NUM]を記述しなければならないのオブジェクトと機能を持っている場合obj.num?値は常に整数で、その周りには引用符がありません。つまり、obj.1234は機能しますがobj。 "string"は使用できないため、表記法を受け入れるべきではありませんか?

+0

サイドノート:もしオブジェクト初期化子のプロパティ名に引用符をドロップすることができます。数値リテラルはそこで有効です: 'var obj = {1234:{" example ":" sample "} ...' –

答えて

3

なぜobj.numではなくobj [num]を記述する必要がありますか?

obj[num]

値(例えば、1234numをとり、プロパティ名としてその値を使用するが、obj.numは、プロパティ名として"num"(文字通り)を使用するため。角かっこは、プロパティ名を文字通り(ドット表記)にするときや、(角カッコ表記)の結果を使用する式を使用しているときに、JavaScriptパーサがどのように認識するかを示します。


(サイドノート:。。私たちはfoo[1]を行うとき確かに、私たちは文字通りfooでプロパティ1を意味する。しかし、パーサの観点から、我々は効果的にそこに表現を使っている)

関連する問題