2012年1月16日月曜日

JavaScriptの連想配列でlengthを取得っ?!

JavaScriptでの連想配列と配列
あるブログに連想配列でlengthとれねーよ( `д´) ケッ!ってありました。
今回はJavaScriptでの連想配列と配列についてちょっと。

JavaScriptで連想配列を作成しようとすると、次のようになります。
var ary1 = {}
ary1['smile'] = ':-)'
一方配列はというと、
var ary2 = [];
ary2[0] = ':-)';
そっくりですねー(°Д°)。
でも上の例は一番混乱しやすい書き方をしています。 

ちょっとだけなのに、大きい違い。
ここの大きな違いって、 最初のカッコっこのところなんですね。
 {}と[] 
じつはこのカッコの違いで、生成してるものが違ってくるんです。

上の例をわかりやすく書きなおすと、 次のようになります。
var ary1 = new Object();
ary1['smile'] = ':-)'


var ary2 = new Array();
ary2[0] = ':-)';
つまり、どちらもオブジェクトを生成していて、
その生成しているオブジェクトが違っていたということなんです。
ArrayとObjectはどう違うか。
Arrayオブジェクトは配列用のオブジェクトで、 配列用のlengthも備えています。
一方、Objectはただ連想配列っぽく使える、
空のオブジェクト(prototypeをのぞいて)です。 もっとわかりやすく書けば、
var ary1 = new Object();
ary1.smile = ':-)'
console.log(ary1['smile']);
という感じになりますね。
連想配列は、オブジェクトを生成して、
そのプロパティに値を設定していただけなんです。
つまり連想配列でlengthがとれないのは...
配列は配列用のオブジェクトとしてつくられているので、
lengthがとれて、 連想配列はそれっぽく使えるオブジェクトを、
 連想配列っぽく使ってるだけなので、lengthはとれないってことがわかると思います。
おまけ。consoleの紹介





こんな風に書いてみて、 Google Chromeで開いて、真っ白な画面上で右クリック、 『要素の検証』を選択するとウィンドウが開きます。 そこの『console』タブを開いてみると、 console.dirに設定したオブジェクトをツリー上に展開してみれますので、試してみて下さい。

0 件のコメント:

コメントを投稿