考虑到console
未被覆盖并且引用本机对象,console.log
方法(可能还有其他方法)从console
对象中提取
var log = obj.log = console.log;
// instead of console.log.bind(console)
log(...);
obj.log(...);
在浏览器和节点兼容性方面是否100%安全?
带有绑定console.log
的大量JS示例(可能过于说明)表明它可能不是。
答案 0 :(得分:8)
浏览器的console
实现不同,基于WebKit / Blink的浏览器(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's:
Node.js和Chromium每个都有自己的setTimeout和console实现。目前,对于控制台,我们在任何地方使用Chromium的实现,因为它可以在devtools中打印并且有更多信息暴露。
在NW.js Node的上下文中提取console
方法是不安全的。
答案 1 :(得分:1)
在浏览器和节点兼容性方面是否100%安全?
不是。
this
(未绑定的方法是i)。我无法在Chrome源代码中找到console
实现。