console 对象与控制台
console 对象的静态方法
console.log方法用于在控制台输出信息。它可以接受一个或多个参数,将它们连接起来输出。
1 | console.log('Hello World') |
console.log方法会自动在每次输出的结尾,添加换行符。
1 | console.log(1); |
如果第一个参数是格式字符串(使用了格式占位符),console.log方法将依次用后面的参数替换占位符,然后再进行输出。
1 | console.log(' %s + %s = %s', 1, 1, 2) |
上面代码中,console.log方法的第一个参数有三个占位符(%s),第二、三、四个参数会在显示时,依次替换掉这个三个占位符。
console.log方法支持以下占位符,不同类型的数据必须使用对应的占位符。
%s字符串%d整数%i整数%f浮点数%o对象的链接%cCSS 格式字符串
1 | var number = 11 * 9; |
上面代码中,第二个参数是数值,对应的占位符是%d,第三个参数是字符串,对应的占位符是%s。
使用%c占位符时,对应的参数必须是 CSS 代码,用来对输出内容进行 CSS 渲染。
1 | console.log( |
上面代码运行后,输出的内容将显示为黄底红字。
console.log方法的两种参数格式,可以结合在一起使用。
1 | console.log(' %s + %s ', 1, 1, '= 2') |
console.count()
count方法用于计数,输出它被调用了多少次。
1 | function greet(user) { |
上面代码每次调用greet函数,内部的console.count方法就输出执行次数。
该方法可以接受一个字符串作为参数,作为标签,对执行次数进行分类。4
1 | function greet(user) { |
上面代码根据参数的不同,显示bob执行了两次,alice执行了一次。
console.time(),console.timeEnd()
这两个方法用于计时,可以算出一个操作所花费的准确时间。
1 | console.time('Array initialize'); |
time方法表示计时开始,timeEnd方法表示计时结束。它们的参数是计时器的名称。调用timeEnd方法之后,控制台会显示“计时器名称: 所耗费的时间”。
console.group(),console.groupEnd(),console.groupCollapsed()
console.group和console.groupEnd这两个方法用于将显示的信息分组。它只在输出大量信息时有用,分在一组的信息,可以用鼠标折叠/展开。
1 | console.group('一级分组'); |
上面代码会将“二级分组”显示在“一级分组”内部,并且“一级分组”和“二级分组”前面都有一个折叠符号,可以用来折叠本级的内容。
console.groupCollapsed方法与console.group方法很类似,唯一的区别是该组的内容,在第一次显示时是收起的(collapsed),而不是展开的。
1 | console.groupCollapsed('Fetching Data'); |
上面代码只显示一行”Fetching Data“,点击后才会展开,显示其中包含的两行。
console.trace(),console.clear()
console.trace方法显示当前执行的代码在堆栈中的调用路径。
1 | console.trace() |
console.clear方法用于清除当前控制台的所有输出,将光标回置到第一行。如果用户选中了控制台的“Preserve log”选项,console.clear方法将不起作用。
控制台命令行 API
$_
$_属性返回上一个表达式的值。
1 | // 4 |
$(selector)
$(selector)返回第一个匹配的元素,等同于document.querySelector()。注意,如果页面脚本对$有定义,则会覆盖原始的定义。比如,页面里面有 jQuery,控制台执行$(selector)就会采用 jQuery 的实现,返回一个数组。
$$(selector)
$$(selector)返回选中的 DOM 对象,等同于document.querySelectorAll。
$x(path)
$x(path)方法返回一个数组,包含匹配特定 XPath 表达式的所有 DOM 元素。
1 | $x("//p[a]") |
上面代码返回所有包含a元素的p元素。
getEventListeners(object)
getEventListeners(object)方法返回一个对象,该对象的成员为object登记了回调函数的各种事件(比如click或keydown),每个事件对应一个数组,数组的成员为该事件的回调函数。
monitorEvents(object[, events]) ,unmonitorEvents(object[, events])
monitorEvents(object[, events])方法监听特定对象上发生的特定事件。事件发生时,会返回一个Event对象,包含该事件的相关信息。unmonitorEvents方法用于停止监听。
1 | monitorEvents(window, "resize"); |
上面代码分别表示单个事件和多个事件的监听方法。
monitorEvents允许监听同一大类的事件。所有事件可以分成四个大类。
- mouse:”mousedown”, “mouseup”, “click”, “dblclick”, “mousemove”, “mouseover”, “mouseout”, “mousewheel”
- key:”keydown”, “keyup”, “keypress”, “textInput”
- touch:”touchstart”, “touchmove”, “touchend”, “touchcancel”
- control:”resize”, “scroll”, “zoom”, “focus”, “blur”, “select”, “change”, “submit”, “reset”上面代码表示监听所有
1
monitorEvents($("#msg"), "key");
key大类的事件。
命令行 API 还提供以下方法。
clear():清除控制台的历史。
copy(object):复制特定 DOM 元素到剪贴板。
dir(object):显示特定对象的所有属性,是console.dir方法的别名。
dirxml(object):显示特定对象的 XML 形式,是console.dirxml方法的别名。
参考链接
- Chrome Developer Tools, Using the Console
- Matt West, Mastering The Developer Tools Console
- Firebug Wiki, Console API
- Axel Rauschmayer, The JavaScript console API
- Marius Schulz, Advanced JavaScript Debugging with console.table()
- Google Developer, Command Line API Reference