如何显示 JavaScript 对象?

如何像alert变量一样以字符串格式显示 JavaScript 对象的内容?

我想显示对象的格式相同。

答案

使用本机JSON.stringify方法。与嵌套对象一起使用,并且所有主流浏览器都支持此方法。

str = JSON.stringify(obj);
str = JSON.stringify(obj, null, 4); // (Optional) beautiful indented output.
console.log(str); // Logs output to dev tools console.
alert(str); // Displays output using window.alert()

链接到Mozilla API 参考和其他示例。

obj = JSON.parse(str); // Reverses above operation (Just in case if needed.)

如果遇到此 Javascript 错误,请使用自定义JSON.stringify 替换程序

"Uncaught TypeError: Converting circular structure to JSON"

如果要出于调试目的打印对象,请使用以下代码:

var obj = {prop1: 'prop1Value', prop2: 'prop2Value', child: {childProp1: 'childProp1Value'}}
console.log(obj)

将显示:

屏幕截图控制台chrome

注意:只能记录该对象。例如,这将不起作用:

console.log('My object : ' + obj)

注意 ' :您还可以在log方法中使用逗号,然后输出的第一行将是字符串,然后将呈现对象:

console.log('My object: ', obj);
var output = '';
for (var property in object) {
  output += property + ': ' + object[property]+'; ';
}
alert(output);

console.dir(object)

显示指定 JavaScript 对象的属性的交互式列表。此清单使您可以使用显示三角形检查子对象的内容。

请注意, console.dir()功能是非标准的。请参阅MDN 网络文档

尝试这个 :

console.log(JSON.stringify(obj))

这将打印对象的字符串化版本。因此,您将获得对象的内容,而不是[object]作为输出。

好的,Firefox(感谢 @Bojangles 提供详细信息)具有Object.toSource()方法,该方法将对象打印为 JSON 和function(){}

我想,对于大多数调试目的而言,这就足够了。

如果要使用警报来打印对象,可以执行以下操作:

alert("myObject is " + myObject.toSource());

它应该以字符串格式打印每个属性及其对应的值。

如果您想以表格格式查看数据,可以使用

console.table(obj);

如果您单击表格列,可以对表格进行排序。

您还可以选择显示哪些列:

console.table(obj, ['firstName', 'lastName']);

您可以在此处找到有关 console.table 的更多信息

在 NodeJS 中,您可以使用util.inspect(obj)打印对象。请务必说明深度,否则您只会看到浅浅的物体。

功能:

var print = function(o){
    var str='';

    for(var p in o){
        if(typeof o[p] == 'string'){
            str+= p + ': ' + o[p]+'; </br>';
        }else{
            str+= p + ': { </br>' + print(o[p]) + '}';
        }
    }

    return str;
}

用法:

var myObject = {
    name: 'Wilson Page',
    contact: {
        email: 'wilson@hotmail.com',
        tel: '123456789'
    }  
}

$('body').append( print(myObject) );

例:

http://jsfiddle.net/WilsonPage/6eqMn/