15 ответов:
Если вы используете Firefox,
alert(object.toSource())должно быть достаточно для простых целей отладки.
Это даст вам очень хороший результат с отступом JSON объекта:
alert(JSON.stringify(YOUR_OBJECT_HERE, null, 4));второй аргумент изменяет содержимое строки перед ее возвратом. Третий аргумент указывает, сколько пробелов следует использовать в качестве пробела для удобства чтения.
Помимо использования отладчика, вы также можете получить доступ ко всем элементам объекта с помощью
foreachпетли. Следующее
Если вы просто хотите иметь строковое представление объекта, вы могли бы использовать , с помощью библиотека JSON.
печать содержимого объекта, который вы можете использовать
console.log(obj_str);вы можете увидеть результат в консоли, как показано ниже.
Object {description: "test"}для открытия консоли нажмите F12 в браузере chrome, вы найдете вкладку консоли в режиме отладки.
вы могли бы узел util.проверить(объект) чтобы распечатать структуру объекта.
это особенно полезно, когда ваш объект имеет циклические зависимости, например
$ node var obj = { "name" : "John", "surname" : "Doe" } obj.self_ref = obj; util = require("util"); var obj_str = util.inspect(obj); console.log(obj_str); // prints { name: 'John', surname: 'Doe', self_ref: [Circular] }Это тот случай JSON.stringify бросает исключение:
TypeError: Converting circular structure to JSON
можно использовать FireBug для отладки JavaScript. Это позволит вам в интерактивном режиме проверить все переменные, и даже шаг через функции.
Use dir (object). Или вы всегда можете скачать Firebug для Firefox (очень полезная).
Javascript для всех!
String.prototype.repeat = function(num) { if (num < 0) { return ''; } else { return new Array(num + 1).join(this); } }; function is_defined(x) { return typeof x !== 'undefined'; } function is_object(x) { return Object.prototype.toString.call(x) === "[object Object]"; } function is_array(x) { return Object.prototype.toString.call(x) === "[object Array]"; } /** * Main. */ function xlog(v, label) { var tab = 0; var rt = function() { return ' '.repeat(tab); }; // Log Fn var lg = function(x) { // Limit if (tab > 10) return '[...]'; var r = ''; if (!is_defined(x)) { r = '[VAR: UNDEFINED]'; } else if (x === '') { r = '[VAR: EMPTY STRING]'; } else if (is_array(x)) { r = '[\n'; tab++; for (var k in x) { r += rt() + k + ' : ' + lg(x[k]) + ',\n'; } tab--; r += rt() + ']'; } else if (is_object(x)) { r = '{\n'; tab++; for (var k in x) { r += rt() + k + ' : ' + lg(x[k]) + ',\n'; } tab--; r += rt() + '}'; } else { r = x; } return r; }; // Space document.write('\n\n'); // Log document.write('< ' + (is_defined(label) ? (label + ' ') : '') + Object.prototype.toString.call(v) + ' >\n' + lg(v)); }; // Demo // var o = { 'aaa' : 123, 'bbb' : 'zzzz', 'o' : { 'obj1' : 'val1', 'obj2' : 'val2', 'obj3' : [1, 3, 5, 6], 'obj4' : { 'a' : 'aaaa', 'b' : null } }, 'a' : [ 'asd', 123, false, true ], 'func' : function() { alert('test'); }, 'fff' : false, 't' : true, 'nnn' : null }; xlog(o, 'Object'); // With label xlog(o); // Without label xlog(['asd', 'bbb', 123, true], 'ARRAY Title!'); var no_definido; xlog(no_definido, 'Undefined!'); xlog(true); xlog('', 'Empty String');
вы можете использовать json.js от http://www.json.org/js.html чтобы изменить данные json на строковые данные.
вы также можете использовать объект прототипа.метод inspect (), который"возвращает отладочно-ориентированное строковое представление объекта".
простая функция для оповещения содержимого объекта или массива .
Вызовите эту функцию с массивом или строкой или объектом, который предупреждает содержимое.функции
function print_r(printthis, returnoutput) { var output = ''; if($.isArray(printthis) || typeof(printthis) == 'object') { for(var i in printthis) { output += i + ' : ' + print_r(printthis[i], true) + '\n'; } }else { output += printthis; } if(returnoutput && returnoutput == true) { return output; }else { alert(output); } }использование
var data = [1, 2, 3, 4]; print_r(data);
Internet Explorer 8 имеет инструменты разработчика, который похож на Firebug для Firefox. В Opera есть Opera DragonFly, а в Google Chrome также есть что-то под названием Инструменты разработчика (Shift+Ctrl+J).
вот более подробный ответ на отладку JavaScript в IE6-8: использование IE8 "инструменты разработчика" для отладки более ранних версий IE
Я столкнулся с подобной проблемой, причиной этого было то, что я использую ajax для извлечения данных. В этом случае я сделал два асинхронных вызова ajax. В одном я просто возвращаю строку msg и показываю в предупреждении. Во втором вызове ajax я получаю arraylist в формате json и декодирую его в js. Поэтому мой второй запрос используется для обработки первого, и я получаю предупреждение об объекте.
Так что просто проверьте. 1. предупреждение должно содержать строку. 2. Если вы получаете arrayList или любой другой объект декодировать его.
все лучше всех!
Comments