Ajax Russia : Аякс по-русски

Свежие новости из мира IT

JavaScript dump(), дампим переменные

В поиске новостей, наткнулся на интересную статью. Её автору надоело, что у PHP есть такая классная функция print_r(), которая выдаёт информацию про структуру и содержимое переменной, а в джаваскрипте такого нет. Так на свет появилась функция dump().

JavaScript:
  1. function dump(arr,level) {
  2.     var dumped_text = "";
  3.     if(!level) level = 0;
  4.    
  5.     //The padding given at the beginning of the line.
  6.     var level_padding = "";
  7.     for(var j=0;j<level+1;j++) level_padding += "    ";
  8.    
  9.     if(typeof(arr) == 'object') { //Array/Hashes/Objects
  10.         for(var item in arr) {
  11.             var value = arr[item];
  12.            
  13.             if(typeof(value) == 'object') { //If it is an array,
  14.                 dumped_text += level_padding + "'" + item + "' ...\n";
  15.                 dumped_text += dump(value,level+1);
  16.             } else {
  17.                 dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
  18.             }
  19.         }
  20.     } else { //Stings/Chars/Numbers etc.
  21.         dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
  22.     }
  23.     return dumped_text;
  24. }

Теперь можно создать джаваскрипт объект или массив и сдампить их содержимое в довольно таки читабельном виде.

JavaScript:
  1. var arra = new Array("So long",'s',42,42.13,"Hello World");
  2. var assoc = {
  3.     "val"  : "New",
  4.     "number" : 8,
  5.     "theting" : arra
  6. };
  7.    
  8.     alert(dump(assoc));

Результатом этого скрипта будет:

JavaScript:
  1. 'val' => "New"
  2. 'number' => "8"
  3. 'theting' ...
  4.    '0' => "So long"
  5.    '1' => "s"
  6.    '2' => "42"
  7.    '3' => "42.13"
  8.    '4' => "Hello World"

Автор рекомендует показывать результат дампа при помощи alert() только если имеете дело с небольшими данными, иначе лучше сдампить содержимое в текстовое поле (textarea). От себя добавлю, что лучше сдампить в консоль от FireBug.

JavaScript:
  1. // вместо
  2. alert(dump(assoc));
  3.  
  4. // делайте
  5. console.log(dump(assoc));

del.icio.us Забобрить!

1 Comment so far

  1. Firebug: dump переменных…

    В блоге “Аякс по-русски” прочитал описание функции dump для вывода содержимого переменных в читабельном виде.
    Однако, если вы работае….

Leave a reply