打印 JavaScript 对象的内容?

IT技术 javascript object
2021-01-28 11:08:32

通常,如果我们只是使用alert(object);它会显示为[object Object]. 如何在 JavaScript 中打印对象的所有内容参数?

6个回答

这将为您提供非常好的输出,使用缩进的 JSON 对象JSON.stringify

alert(JSON.stringify(YOUR_OBJECT_HERE, null, 4));

第二个参数 ( replacer) 在返回之前更改字符串的内容。

第三个参数 ( space) 指定使用多少个空格作为可读性的空格。

JSON.stringify文档在这里

很好的答案。你救了我的一天,我在Phonegap中使用它。
2021-03-13 11:08:32
我在 Chrome: 中看到了同样的循环结构错误 Uncaught TypeError: Converting circular structure to JSON我做错了什么,还是 Chrome 特有的?
2021-03-15 11:08:32
这不适用于具有循环引用链的对象 - Chrome 给出错误:TypeError: Converting curcular structure to JSON
2021-03-23 11:08:32
+1 用于跨平台支持。在 ECMAScript 第 5 版中标准化,支持 Firefox 3.6、Chrome(ver?)、Safari 4 和 IE8。仅供参考:4 个参数是每个缩进级别的空格数。它也可以是一个字符串,例如“\t”。如果您想限制显示的内容,则 null 参数是过滤功能的占位符。请参阅:developer.mozilla.org/en/JavaScript/Reference/Global_Objects/...
2021-04-05 11:08:32
在 IE8 JS 调试器中无限有用。
2021-04-08 11:08:32

如果您使用的是 Firefox,alert(object.toSource())应该足以满足简单的调试目的。

我试图在 console.log(object.toSource()); 中使用它。没有为我工作..
2021-03-19 11:08:32
IE9 也支持(如果不是更早版本),但 Chrome 17 或 Safari 5 不支持。
2021-03-21 11:08:32
使用 Firefox 量子 58, object.toSource() 极大地减慢了浏览器的速度。它可能是我的对象(json 字符串),但它不应该发生。编辑:我实际上不是一个循环对象值。JSON.stringify() 向控制台发送警告,这比 .toSource() 行为更好(无警告,半冻结)
2021-03-28 11:08:32
是否有跨浏览器的方式做类似的事情?
2021-04-05 11:08:32
在最近的浏览器中,您可以使用console.dir(object)将对象的内容转储到调试控制台(大多数浏览器上的 F12)。
2021-04-08 11:08:32

除了使用调试器,您还可以使用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)也有内置的调试工具,您应该检查一下。

可能想要在循环内添加 if (o.hasOwnProperty(p))
2021-03-22 11:08:32
这是一个好主意,但在调试时我宁愿看到这一切。也许更好的是: for (var p in o) { if (!o.hasOwnProperty(p)) out += '(inherited) '; out += p + ': ' + o[p] + '\n'; }
2021-03-25 11:08:32

如果您只想拥有对象的字符串表示形式,则可以使用该JSON.stringify函数,使用JSON 库

这是最好的答案恕我直言,它可以跨浏览器工作
2021-03-23 11:08:32

您可以使用 Node 的util.inspect(object)打印出对象的结构。

当您的对象具有循环依赖关系时,它特别有用,例如

$ 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

感谢。这可以用于打印到日志的地方。
2021-04-04 11:08:32