テクニカルスキルブログ
JS | written by yama

先日Javasciptはプロトタイプベースの言語である事を失念して恥ずかしい思いをしました。
同じミスをしないようにメモしておきます。

---------------------------------------------
var o = {huga: 'huga', moge: 'moge'};
for (var i=0; i<o.length; i++) {
  alert(o[i]);
}

---------------------------------------------

あれ?動かない・・・っていうので10分ほど思考停止。


PHPばっかり書いていて、そちらの連想配列に慣れてしまうとたまに意味が分からないことをしてしまいます。

PHPとjavascriptの連想配列は全く違うんですよね。

javascriptはすべてオブジェクトです。
つまりjavascriptの配列は'連想配列'の特殊なパターンのわけです。

だから、'.length'使いたかったらこう書かないといけませんよね。。

---------------------------------------------

var o = {0: 'huga', 1: 'moge', 2: 'hage', length: 3}
o.__proto__ = Array.prototype;

---------------------------------------------


でもこんなの何の意味がないのは見れば当然...わざわざlengthに自分で数を入れるなんて、無意味もいいところなので。

素直に

---------------------------------------------

for(var i in o){
  alert(o[i]);
}

---------------------------------------------

で、解決しました。

この記事の続きを読む

カテゴリー

月別アーカイブ

LINKS