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はとれないってことがわかると思います。
0 件のコメント:
コメントを投稿