JavascriptのObject型は簡単に循環参照を作れてしまう。 こういう奴 var data = { a : 'a', b : {c : 'c'} }; data['d'] = data; // 循環参照 こいつは便利な反面、汎用的な処理をしたい時にハマる! 普通にハッシュを再帰で舐める function crawl_object ( data ) { for ( i in data ){ if ( typeof(data[i]) === 'object') { crawl_object ( data[i] ); // 再帰 }else{ do_anything(i,data[i]); } } } nodeで実行するとこんな感じ RangeError: Maximum call stack size exceeded無限再帰でスタックが尽きた・・・ 良く有りそうな処理なのに手段が用意