JavaScriptを使ってオブジェクトや配列の内容を表示する関数を作ってみた。最初は単純なオブジェクトや配列を表示するだけであったが、オブジェクトや配列の中に更にオブジェクトや配列を含む階層構造を持つものも表示したくなった。
こんな時に約に立つのが自分自身をコールする再帰呼び出しである。
JavaScriptの再帰呼び出しはargumentsオブジェクトのcalleeプロパティを使って行うもので、これを使うとシンプルなコードで表現できる。
サンプル
function checkObject2(_obj){ for(var key in _obj){ document.write(key +" : "+_obj[key] + "<br>"); if(_obj[key] instanceof Array || _obj[key] instanceof Object){ arguments.callee(_obj[key]); } } return; }
上記の例では、表示したいオブジェクトの内容(_obj[key])が配列やオブジェクトならば、この配列やオブジェクトを新たな引数にしてarguments.callee(_obj[key])で自分自身「checkObject2(_obj)」をコールしている。