admin管理员组文章数量:1430584
Considering that console
wasn't overriden and refers to native object, console.log
method (and possibly others) is extracted from console
object with
var log = obj.log = console.log;
// instead of console.log.bind(console)
log(...);
obj.log(...);
Is it 100% safe in terms of browser and Node patibility?
A significant amount of JS examples (maybe too illustrative) with bound console.log
suggests that it may be not.
Considering that console
wasn't overriden and refers to native object, console.log
method (and possibly others) is extracted from console
object with
var log = obj.log = console.log;
// instead of console.log.bind(console)
log(...);
obj.log(...);
Is it 100% safe in terms of browser and Node patibility?
A significant amount of JS examples (maybe too illustrative) with bound console.log
suggests that it may be not.
- Did you try it, does it work? What environment[s] are you running in? – epascarello Commented May 25, 2016 at 0:52
-
That depends on the implementation, but a sane implementation would implement
log
as something likethis._write(log_level, msg, ...)
, i.e. a shorthand alias to another internal method. As such,this
very likely must be preserved. – deceze ♦ Commented May 25, 2016 at 0:52 - @epascarello Never had problems with it in actual FF and Chrome versions, but not sure about the rest. – Estus Flask Commented May 25, 2016 at 0:58
- @estus: I'm pretty sure in both node and Chrome it was (is?) a problem. In Opera 12 extraction worked. – Bergi Commented May 25, 2016 at 1:43
- It doesn't even work in Chrome. How can it be 100% safe? – Gokhan Kurt Commented May 28, 2016 at 12:15
2 Answers
Reset to default 8Browsers differ in their console
implementations, it appears that WebKit/Blink-based browsers (Chrome, Opera 15+, Safari, etc) are the only ones that are unfortable with extracted console
methods. For browser patibility extracted methods have to be bound:
var log = console.log.bind(console);
Node has its own console
implementation that relies on this
but pre-binds its methods. It is safe to extract console
methods in Node applications, the same applies to Electron's main process.
NW.js replaces Node console
with Chromium's:
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.
It is not safe to extract console
methods in NW.js Node's context.
Is it 100% safe in terms of browser and Node patibility?
It isn't.
- In Node.js console methods are bound to instance on method creation. Relevant code in Node.js source.
- Gecko console method requires valid
this
(unbound methods are i).
I couldn't find console
implementation in Chrome source.
本文标签: javascriptconsolelog method extraction from consoleStack Overflow
版权声明:本文标题:javascript - console.log method extraction from console - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745466370a2659551.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论