こんにちは、なかわけです。
今日仕事中にJavascriptにハメられたことをメモ。
メモしておけば同じ過ちをしないと思ったので。
2次元の連想配列が作りたくで以下のように書きました。
//TypeA TypeA = {}; TypeA['hoge']['fuga'] = 'piyo'; alert(TypeA['hoge']['fuga']);
こうすると、alertはでないし、なかわけの環境ではスクリプトエラーも出ませんでした。
おかしいなあと思って、その時はとりあえず1次元の連想配列でやり過ごしました。
お家帰って思いつきました。
TypeA = {};
はObjectであっても、
TypeA['hoge']
はObjectではないのでfugaプロパティが追加できない(配列的に扱えない)!
てことで、以下
//TypeB TypeB = {}; TypeB['hoge'] = {fuga : 'piyo'}; alert(TypeB['hoge']['fuga']);
のように書くか、もしくは
//typeC TypeC = {}; TypeC['hoge'] = {}; TypeC['hoge']['fuga'] = 'piyo' alert(TypeC['hoge']['fuga']);
のように書く必要があったのですね。
あーしょうもないことに時間費やした・・・。
でも、ここにメモしたので一生忘れない!