gpt4 book ai didi

javascript - window.console 可以被覆盖吗?它是只读的吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:39:23 26 4
gpt4 key购买 nike

我在 javascript 中使用 console 对象进行调试,并希望覆盖它以便在移动浏览器中使用此类功能。

但是,我无法理解以下 MDN 文档

The Window.console read-only property returns a reference to the Console object, which provides methods for logging information to the browser's console.

( https://developer.mozilla.org/en-US/docs/Web/API/Window/console )

特别是:

  1. 我无法弄清楚 Window 到底是什么接口(interface),但它似乎与全局 window 属性不同
  2. 一项测试表明(在当前的 Chromium 和 Firefox 中)window.console 确实可以被覆盖事件,尽管它似乎与我在文档中读到的内容相矛盾。 (这种覆盖的一个例子提供了 this answer ;即使注释反对

You can't use window.console = { ... } because window.console is a read-only property ! – Luillyfe Feb 23 at 21:28

Window.consolewindow.console 的只读特性是什么?

最佳答案

它不是只读的。 MDN 是一个很好的资源,但它是由社区编辑的,有时会出现错误或无来源的声明。

  1. I cannot make head's or tails' of what actually is the Window interface, but it seems to be different to the global window property

Window 接口(interface)定义了浏览器中 window 对象可用的属性和方法,这些属性和方法可通过默认的 window 全局变量使用。您可以将它想象成这样:var window = new Window() 当然这不是字面意思是真的。

  1. ... What is it with the read-only-ness of Window.console or window.console ?

它不是只读的。

  • 理论:Window interface根本没有提到 console,但是 console spec表示它是在 window 上公开的命名空间对象。 WebIDL 规范说 namespace objects默认情况下,它们是可写的、可配置的和不可枚举的。 (感谢 sideshowbarker 指出这一点!)

  • 实践:它在我试过的所有浏览器(Chrome、Firefox、Safari、IE9、IE11、Edge)上都是可写的。在除 IE11 之外的所有浏览器中,consolewindow 引用的对象的一个​​“自己的”属性,并且分配给它有效(在松散和严格模式下)。 (IE11 是奇怪的鸭子:console 不是 window 的属性,当 devtools 关闭时,但它的类型是 "object" 并且如果你记录 String(console) 它的结果是 [object Console]"。但是当 devtools 打开时,它是 window 的一个自己的属性而不是只读的。)

我已经更新了 MDN 页面,删除了那句话的“只读”部分。

我并不是说用其他东西替换 console 是一个好主意。 :-) 但请注意,如果您选中了“显示控制台”选项(默认情况下是这样),那么 SO 自己的 Stack Snippets 就可以做到这一点。

关于javascript - window.console 可以被覆盖吗?它是只读的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53666880/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com