原文地址:
原文作者:Dr. Axel Rauschmayer
在诸多 JavaScript解析引擎中,均有一个含有记录日志和调试方法的 console 的全局对象。该对象并不是JS语言规范的一部分,但是自从被 Firebug 调试器率先推出之后已成为事实上的标准。因为它们的主要作用适用于调试, 所以 console的方法只被频繁的在开发阶段使用,很少在代码部署阶段使用。
这篇博文描述了 console 方法的概述。
1. 如何在跨浏览器情况下规定 console API?
Firebug 首先提供了 console API 并且其在 也算是最接近标准的文档。此外Brian Kardell 和 Paul Irish 也在为一份长期的跨浏览器行为一致性的 努力着。在此之前,跨浏览器行为是极度混乱的。所以该博文仅能提供一下概述。对于细节方面就需要参考各个平台下的文档:
Firebug:
Internet Explorer:
Node.js:
IE9下的BUG:该浏览器下,console 对象只存在于被至少打开过一次开发工具的情况下。意味着你可能会在未打开开发工具的时候引用 console 得到一个 ReferenceError。所以解决方法就是需要检测 console 是否存在,否则就要创建一个虚拟实现的对象。
2. 简单的日志记录
方法:
console.clear()
清除日志
console.debug( object1, object2?, ... )
倾向于 console.log() 执行与此方法相同。
console.error( object1, object2?, ... )
控制台记录参数,在浏览器中被记录的内容会有一个"错误"标识标记,包括一个堆栈跟踪和代码的链接。
console.exception( errorObject, object1?, ... ) [ 仅在 Firebug ]
记录object1等,然后展现相互调用的堆栈跟踪。
console.info( object1, object2?, ... )
console.log() 执行与此方法相同。(原文有点问题)
console.log( object1, object2?, ... )
控制台记录参数,如果第一个参数是为 printf风格 类型的字符串,那么使用它来打印剩余的参数。
(例 Node.js)
唯一可靠的跨平台格式指令是 %s。 Node.js 支持 %j 以 JSON 的方式来用处理数据。浏览器往往支持一些与控制台交互的指令。
console.trace()
记录堆栈跟踪(在浏览器中的交互)
console.warn( object1, object2?, ... )
控制台记录参数,在浏览器中被记录的内容会有一个"警告"标识标记,包括一个堆栈跟踪和代码的链接。
支持的平台版本
exception 已经排版为斜体,因为仅有一个平台支持。
3. 检测和计数
方法:
console.assert( expr, obj? )
当 expr 为 false 的时候,控制台记录 obj ,抛出一个 异常。
console.count( lable? )
记录该 label 所在行被执行的次数。
支持的平台版本
4. 记录的格式化
方法:
console.dir( object )
在控制台输出对象形式的表现。在浏览器中可以进行交互式查看。
console.dirxml( object )
输出一个 HTML 或者 XML 元素的 XML 源码树。
console.group( object1?, object2?, ... )
控制台记录这些对象,打开一个记录所有将来内容的嵌套块。使用 console.groupEnd() 方法关闭。块为展开形式,可以折叠。
console.groupCollapsed( object1?, object2?, ... )
功能与 console.group 一致,但是块为闭合状态。
console.groupEnd()
关闭使用 console.group() 和 console.groupCollapsed() 打开的块。
console.table( data, columns? )
以每行一个元素的表格形式输出数组。可选参数 columns 可以指定列显示属性或者数组索引。如果不传递参数,所有表格列 号会之用属性键值。
支持的平台版本
5. 分析和时序
方法:
console.markTimeline( label ) [ 仅支持 Safari ]
与 timeStamp() 一致。
console.profile( title? )
开启分析,可选参数 title 在分析报告中使用
console.profileEnd()
结束分析,并且输出分析报告
console.time( label )
开启标签为 label 的计数器
console.timeEnd( label )
关闭标签为 label 的计数器,输出自打开计时器以来的经过的时间。
console.timeStamp( label? )
记录给标签 label 一个时间戳,可能将记录到控制台或者时间轴上。
支持的平台版本
6. 致谢
两位指点过本文内容的:Matthias Reuter (@gweax) 和 Philipp Kyeck (@pkyeck)。
阅读(2363) | 评论(0) | 转发(0) |