型検査6

var rec = function _f(tgt,list,func){
  array = list[tgt];
  if(array instanceof Array){
    for(var i=0; i<array.length; i++){
      if(tgt == array[i]){
        return;//登録済は無視する。
      }
    }
  }
  array[array.length] = tgt;//末尾に登録
  //
  func(tgt);//何か操作する。
  //
  array[array.length] = tgt;
  list[tgt] = array;
  for(var id in tgt){
    _f(tgt[id],list,func);
  }
}

再帰的に走査するコードはこれでよいはずだが、globalに対して実行するとエラーが出る。何故だろう。
追記:__proto__やfunction.prototypeも再帰に加えた方が良いかな。