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
实现,它依赖于 this
但 pre-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?
不是。
- 在 Node.js 中,控制台方法在方法创建时绑定到实例。 Relevant code in Node.js source.
- Gecko 控制台方法需要有效
this
(未绑定方法是 i)。
我在 Chrome 源代码中找不到 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
实现,它依赖于 this
但 pre-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?
不是。
- 在 Node.js 中,控制台方法在方法创建时绑定到实例。 Relevant code in Node.js source.
- Gecko 控制台方法需要有效
this
(未绑定方法是 i)。
我在 Chrome 源代码中找不到 console
实现。