【发布时间】:2013-03-17 18:48:57
【问题描述】:
如果 chrome/safari webkit 检查器中的输出包含打印出的对象,例如:
只有大量嵌套对象会更复杂(这就是复制/粘贴无法做到的原因)
有没有办法将它放在一个变量中以进一步检查并在它被打印到控制台(它通过console.log打印)之后处理它,只是在它已经在控制台中之后?
【问题讨论】:
标签: javascript google-chrome webkit web-inspector
如果 chrome/safari webkit 检查器中的输出包含打印出的对象,例如:
只有大量嵌套对象会更复杂(这就是复制/粘贴无法做到的原因)
有没有办法将它放在一个变量中以进一步检查并在它被打印到控制台(它通过console.log打印)之后处理它,只是在它已经在控制台中之后?
【问题讨论】:
标签: javascript google-chrome webkit web-inspector
$_ 将为您提供控制台的最后输出。所以在控制台中你可以分配给一个变量。
请注意,您只能在控制台中执行此操作,而不能从您自己的代码中执行此操作。
【讨论】:
这是一种不在自定义日志函数中包装console.log的方法:
var justLogged;
var oldLog = console.log;
console.log = function () {
oldLog.apply(console, arguments);
justLogged = arguments;
};
console.log('test');
// if necessary, restore console.log to its original behavior when you're finished with it
console.log = oldLog;
justLogged 的值将是 ['test'],因为您刚刚记录了它。
【讨论】:
oldLog.apply(this, arguments) 传递所有参数而不是只传递第一个参数。
apply 而不是call。
如果您希望获得最后一个输出,do as Mohsen suggests。
如果你想得到console.log 的最后一个输出,你最好的选择是一个包装函数。这可以 (1) 做您想做的事 (2) 在生产中轻松禁用,这对旧 IE 很有帮助并隐藏调试消息。
var log = (function() {
var lastOutput;
var fn = function() {
lastOutput = arguments[0]; // save the last argument
console.log.apply(console, arguments); // defer to console.log
};
fn.last = function() {
return lastOutput;
};
return fn;
})();
log("abc123");
log.last(); // => "abc123"
【讨论】: