在Chrome中创建console.log()的快捷方式

30

因为我很懒,我创建了一个函数log,它基本上只是console.log的缩写:

function log() {
  console.log.apply(console, arguments);
}
每当我调用这个函数时,我可以在Google Chrome的开发者工具中看到已记录的项,在右侧是记录该项的行号。然而,这个行号总是相同的,因为实际的console.log调用在代码中的一个特定位置(即在我声明log函数的地方)。
我还尝试了以下方法:
var log = console.log;

但这总是会抛出错误:Illegal invocation。很奇怪,但我猜那不可能发生。

我如何创建一个指向console.log的快捷方式,在开发者工具中显示调用log的行数,而不是实际console.log调用所在的行数?


日志不起作用,因为全局对象(窗口)没有日志方法。我非常怀疑你想做的事情是否可能。但如果被证明是错误的,我会很感兴趣。 - HBP
@Hand B PUFAL:如果我说错了,请原谅,但是我已经声明了自己的 log() 函数,这样我就可以只用 log() 来调用它。所以它确实可以工作,只是显示的位置不是我想要的。 - pimvdb
我在控制台中没有“非法调用”错误,但是在document中有,例如在document.getElementById中。我在这里找到了一些解释链接,但我不明白为什么它在同一文档中无法工作。 - Igor Fomenko
4个回答

75

我报告了这个问题,但被拒绝,但答案很简单-像这样创建快捷方式:

var log = console.log.bind(console);

这样做不会省略行号,同时您可以像这样调用它 log(...)


这是永久的还是当我关闭并重新打开Chrome时它会消失? - uzay95
@pimvdb:有什么解决办法可以得到行号。 - Rahul Reddy
我见过的最好的方法是,在某些函数中禁用日志记录,可以编写以下代码: const $=0; $ && log('hello javascript'); - Igor Fomenko

5
我刚刚创建了一个模块来实现这个功能。
看一下:https://github.com/ahlechandre/consl

安装

npm install consl --save-dev

使用方法

const { cl } = require('consl');

cl('Outputs a message on the Console using a quick');

2
在我的情况下,我已经设置了一个AutoHotKey快捷键,快捷键为Ctrl+Alt+L,如下所示:
^!l::Send console.log();{Left}{Left}

好处是它将光标带回括号内,方便快速输入。

1
尝试了几个方法,但我认为你不能这样做。一旦你包装了console.log,行号将是代码中找到此包装的行。那么我想我们只能接受这种情况了?

你可以随时尝试,这是可以理解的需求。但我认为在@Chromium中它不会获得高优先级排名;~)。 - KooiInc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接