プロパティは.length
、数値インデックス (キー) を持つプロパティのみを追跡します。キーに文字列を使用しています。
あなたはこれを行うことができます:
var arr_jq_TabContents = {}; // no need for an array
arr_jq_TabContents["Main"] = jq_TabContents_Main;
arr_jq_TabContents["Guide"] = jq_TabContents_Guide;
arr_jq_TabContents["Articles"] = jq_TabContents_Articles;
arr_jq_TabContents["Forum"] = jq_TabContents_Forum;
for (var key in arr_jq_TabContents) {
console.log(arr_jq_TabContents[key]);
}
安全のために、そのようなループでは、どのプロパティも予期しない継承の結果ではないことを確認することをお勧めします。
for (var key in arr_jq_TabContents) {
if (arr_jq_TabContents.hasOwnProperty(key))
console.log(arr_jq_TabContents[key]);
}
edit — 関数が最新のブラウザーや Node などで使用できることに注意するのはおそらく良い考えObject.keys()
です。その関数は、オブジェクトの「所有」キーを配列として返します。
Object.keys(arr_jq_TabContents).forEach(function(key, index) {
console.log(this[key]);
}, arr_jq_TabContents);
に渡されたコールバック関数.forEach()
は、各キーと、によって返された配列内のキーのインデックスで呼び出されObject.keys()
ます。関数が反復する配列も渡されますが、その配列は実際には役に立ちません。元のオブジェクトが必要です。これは名前で直接アクセスできますが、(私の意見では) 明示的に渡す方が少し良いです。これは、コールバック内.forEach()
でバインドされる元のオブジェクトに 2 番目の引数を渡すことによって行われます。this
(これが下のコメントに記載されているのを見ただけです。)