Аналог функции PHP print_r для Javascript

Здесь мы рассмортим аналог PHP функции PRINT_R на JavaScript, реализующую возможность распечатывать массивы, хэши и прочие объекты.

Итак, сразу к делу! Ниже приведен код функции print_r:

<script>
   function print_r( array, return_val ) {
      var output = "", pad_char = " ", pad_val = 4;
      var formatArray = function (obj, cur_depth, pad_val, pad_char) {
         if(cur_depth > 0)
            cur_depth++;
         var base_pad = repeat_char(pad_val*cur_depth, pad_char);
         var thick_pad = repeat_char(pad_val*(cur_depth+1), pad_char);
         var str = "";
         if(obj instanceof Array || obj instanceof Object) {
            str += "Array\n" + base_pad + "(\n";
            for(var key in obj) {
               if(obj[key] instanceof Array || obj[key] instanceof Object) {
                  str += thick_pad + "["+key+"] => "+formatArray(obj[key], cur_depth+1, pad_val, pad_char);
               } else {
                  str += thick_pad + "["+key+"] => " + obj[key] + "\n";
               }
            }
            str += base_pad + ")\n";
         } else {
            str = obj.toString();
         };
         return str;
      };
   
      var repeat_char = function (len, char) {
         var str = "";
         for(var i=0; i < len; i++) { str += char; };
         return str;
      };
      output = formatArray(array, 0, pad_val, pad_char);
      if(return_val !== true) {
         document.write("<pre>" + output + "</pre>");
         return true;
      } else {
         return output;
      }
   }
</script>

Пример использования print_r

print_r(
    {
      name: "Anton",
      age : 18,
      interests: {
         games: ['Counter Strike', 'Космические рейнджеры'],
         internet: ['programming', 'news']
      },
      sex : "male"
   },
   false
);