通常情况下,如果我们只使用alert(object);,它将显示为[object Object]。如何在JavaScript中打印对象的所有内容参数?
alert(object);
[object Object]
你应该考虑使用FireBug进行JavaScript调试。它将允许您交互式地检查所有变量,甚至逐步通过函数。
使用dir(对象)。或者你可以下载Firefox的Firebug(真的很有用)。
你也可以使用Prototype的object .inspect()方法,该方法“返回对象的面向调试的字符串表示”。
http://api.prototypejs.org/language/Object/inspect/
如果你只是想要一个对象的字符串表示形式,你可以使用JSON.stringify函数,使用JSON库。
JSON.stringify
除了使用调试器,还可以使用foreach循环访问对象的所有元素。下面的printObject函数应该alert()你的对象,显示所有属性和各自的值。
foreach
printObject
alert()
function printObject(o) { var out = ''; for (var p in o) { out += p + ': ' + o[p] + '\n'; } alert(out); } // now test it: var myObject = {'something': 1, 'other thing': 2}; printObject(myObject);
使用DOM检查工具更可取,因为它允许您挖掘对象本身的属性。Firefox有FireBug,但所有其他主要浏览器(IE、Chrome、Safari)也有内置的调试工具,你应该检查一下。
ie8有类似于Firefox的Firebug的开发工具。Opera有Opera DragonFly,谷歌Chrome也有开发人员工具(Shift+Ctrl+J)。
如果您正在使用Firefox, alert(object.toSource())应该足以用于简单的调试目的。
alert(object.toSource())
你可以在你的对象原型中给他们自己的toString方法。
你可以使用http://www.json.org/js.html中的json.js将json数据更改为字符串数据。
这将为您提供非常好的输出,使用JSON.stringify的缩进JSON对象:
alert(JSON.stringify(YOUR_OBJECT_HERE, null, 4));
第二个参数(replacer)在返回字符串之前改变字符串的内容。
replacer
第三个参数(space)指定使用多少个空格作为可读性的空白。
space
JSON.stringify文档。
所有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');
提醒对象或数组内容的简单函数 使用数组或字符串或对象调用此函数,它会提醒内容
函数
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);
你可以用Node的util.inspect(对象)来打印出对象的结构。
当你的对象有循环依赖时,这是特别有用的。
$ 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
TypeError: Converting circular structure to JSON
打印可以使用的对象的内容
console.log(obj_str);
你可以在控制台看到结果,如下图所示。
Object {description: "test"}
打开控制台按F12在chrome浏览器,你会发现控制台选项卡在调试模式。
检查一下。 1. 警报应该包含字符串。 2. 如果你得到数组列表或任何其他对象解码它
祝你一切顺利!