【问题标题】:JS Window Global ObjectJS 窗口全局对象
【发布时间】:2023-10-22 04:55:01
【问题描述】:

我了解到窗口全局对象是*对象。他是包含 DOM、BOM 和 JS 的所有代码的“盒子”。

我了解到 window 对象代表浏览器中打开的窗口,并且 window 对象没有构造函数,这意味着我无法创建它的实例。

我了解到该对象是由浏览器自动创建的。我想问的是如何?

我的意思是如果它没有构造函数,那么浏览器就不能为对象创建自己的实例。我在想浏览器必须能够以某种方式创建它,所以我的问题是浏览器是如何创建它的?如果有人能帮助我理解这一点,我会很高兴。

【问题讨论】:

  • 你的推理并不完全正确。 window.constructor !== undefined。此外,window 不包含所有“JS”。
  • 这个问题可以使用一些复制编辑。

标签: javascript object window


【解决方案1】:

没有构造函数?

>> window.constructor
[object Window]

好吧,你懂什么,构造函数!

也就是说……

>> new Window
(X) Object does not support this action

所以我猜这意味着只有本机代码才能创建新的 Window 实例。

【讨论】:

  • 你能更好地解释一下你自己吗,当你使用带有窗口对象的构造函数时,它会返回窗口对象但是如果我在 func 示例中编写 $this var 也会发生同样的情况:function foo( ){document.write($this);} 如果运行 func 会发生同样的事情,如果你能用另一个词解释你说的话,我会很高兴
  • 还有什么要解释的? window 有一个构造函数,这就是你要问的......对吗?
  • 所以如果我理解正确,有一个窗口对象,他有一个构造函数,重新创建窗口对象的唯一方法是将它引用到他的本机代码 window.constructor ,我知道我们不能构造将 window 对象转换为 x 对象,我们只能调用他或重新创建它,如果有人确认这一点,我们会很高兴谢谢大家。