すがブロ

sugamasaoのhatenablogだよ

お前のすべてをさらけ出せ

それFireBugでできるよ!

変数の中身をガン見したいのだけど、IEで開発をしている都合上、IEで変数のインスペクトをしたい。
だけど、入れ子のデータ構造とかになると、単純に for in した値を alert で出すだけだと [object] とか常人には理解不能な出力がされるので気が狂いそうになる。
そこで、ついさっき、或る程度インスペクトしてくれるっぽい関数を作ってみた。
色々なデータ構造を想定しているわけではないので、あっさり使えなくなるかもしれないけれど、ハッシュの組み合わせならなんとかなると思われる。

var debug_inspect = function(obj, dep) {
  var str="";
  if(typeof dep == 'undefined') {
    dep=0;
  }
  for (var i in obj) {
    if (typeof obj[i] == 'object') {
      str += debug_inspect(obj[i], dep+1);
    } else {
      var sep = "";
      for(var j = 0; j < dep; j++) {
        sep += "_";
      }
      str += (sep + i + ":" + obj[i] + "("+ typeof obj[i] + ")\n");
    } 
  }
  return str;
}

再帰とか普段使わないのでこんなんであってるのか分からないけれど。というか、こんなのを作るまでもなく便利ツールがあるのかもしれないけれど・・・。
あ、ちなみに、使い方は以下の通り。

test = {hoge:"fuga", fizz:{buzz:"fizzbuzz"}};
alert(debug_inspect(test));

alert で出力するのに、各値を \n で改行しているのだけど、なぜか "\n" のまま出力されている。元々 FireFox だとそんな動きなんだっけか?
あ、そうそう。出力結果に出ているであろうアンダースコアはネストを現してます。