从控制台中提取console.log方法

时间:2016-05-25 00:49:55

标签: javascript node.js console.log

考虑到console未被覆盖并且引用本机对象,console.log方法(可能还有其他方法)从console对象中提取

var log = obj.log = console.log;
// instead of console.log.bind(console)
log(...);
obj.log(...);

在浏览器和节点兼容性方面是否100%安全?

带有绑定console.log的大量JS示例(可能过于说明)表明它可能不是。

2 个答案:

答案 0 :(得分:8)

浏览器的console实现不同,基于WebKit / Blink的浏览器(Chrome,Opera 15 +,Safari等)是唯一对提取的console方法感到不舒服的浏览器。对于浏览器兼容性,必须绑定提取的方法:

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

Node有自己的console实现,它依赖于thispre-binds its methods。在Node应用程序中提取console方法是安全的,这同样适用于Electron的主要流程。

NW.js replaces Node console与Chromium's:

  

Node.js和Chromium每个都有自己的setTimeout和console实现。目前,对于控制台,我们在任何地方使用Chromium的实现,因为它可以在devtools中打印并且有更多信息暴露。

在NW.js Node的上下文中提取console方法是不安全的。

答案 1 :(得分:1)

  

在浏览器和节点兼容性方面是否100%安全?

不是。

我无法在Chrome源代码中找到console实现。