console.log 从控制台提取方法

console.log method extraction from console

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

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

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

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

浏览器在 console 实现上有所不同,似乎只有 WebKit/Blink-based 浏览器(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 的:

Node.js and Chromium each has its own implementation of setTimeout and console. Currently, for console, we use Chromium's implementation everywhere, because it can print in devtools and have more information exposed.

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

Is it 100% safe in terms of browser and Node compatibility?

不是。

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