我用console
javascript 中的对象用于调试,并希望覆盖它以便在移动浏览器中使用此类功能。
但是,我无法理解以下 MDN 文档
Window.console 只读属性返回对
Console 对象,提供将信息记录到控制台的方法
浏览器的控制台。
(https://developer.mozilla.org/en-US/docs/Web/API/Window/console https://developer.mozilla.org/en-US/docs/Web/API/Window/console)
尤其:
- 我无法弄清楚到底是什么Window https://developer.mozilla.org/en-US/docs/Web/API/Window接口,不过好像和全局的不一样
window
财产
- 测试表明(在当前的 Chromium 和 Firefox 中)window.console 确实可以被覆盖事件,尽管它似乎与我在文档中读到的内容相矛盾。 (这种覆盖的一个例子提供了这个答案 https://stackoverflow.com/a/11403129/1711186;即使评论反对
您不能使用 window.console = { ... } 因为 window.console 是
只读属性! – Luillyfe 2 月 23 日 21:28
只读性是怎么回事Window.console
or window.console
?
它不是只读的。 MDN 是一个优秀的资源,但它是由社区编辑的,有时会出现错误或来源不明的声明。
- 我无法弄清楚到底是什么
Window
接口,不过好像和全局window属性不一样
界面Window
定义浏览器中 window 对象上可用的属性和方法,可通过默认设置使用window
全局变量。你可以这样想:var window = new Window()
当然那不是字面上地 true .
- ... 的只读性是怎么回事
Window.console
or window.console
?
它不是只读的。
Theory: The Window界面 https://html.spec.whatwg.org/#the-window-object没有提到console
根本没有,但是console spec https://console.spec.whatwg.org/说它是一个公开的名称空间对象window
。 WebIDL 规范指出命名空间对象 https://heycam.github.io/webidl/#dfn-namespace-object默认情况下,它们是可写的、可配置的且不可枚举的。(谢谢杂耍者 https://stackoverflow.com/users/441757/sideshowbarker指出这一点!)
Practice:它在我尝试过的每个浏览器上都是可写的(Chrome、Firefox、Safari、IE9、IE11、Edge)。在除 IE11 之外的所有版本中,console
是对象的“自己”属性window
指代并分配给它(在松散和严格模式下)。 (IE11 是个奇怪的鸭子:console
不是自己的财产window
当 devtools 关闭时,但其类型是"object"
如果你登录String(console)
结果是"[object Console]"
。但是当 devtools 打开时,它就是 的自己的财产window
并且不是只读的。)
我已经更新了 MDN 页面,删除了该句子的“只读”部分。
我不是说替换console
与其他东西是好主意。 :-) 但请注意,如果您选中了“显示控制台”选项(默认情况下如此),SO 自己的堆栈片段就会完全执行此操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)