什么是 Window
?
这是我在Chrome控制台上看到的内容:
window
Window {top: Window, window: Window, location: Location, external: Object,
chrome: Object…}
Window
function Window() { [native code] }
什么是 Window
?
这是我在Chrome控制台上看到的内容:
window
Window {top: Window, window: Window, location: Location, external: Object,
chrome: Object…}
Window
function Window() { [native code] }
Window
是一个函数,正如您所看到的那样。它是窗口的构造函数(但您不能直接使用构造函数构建新窗口,通常使用Window.open
函数)。Window.prototype
包含您可以在窗口上调用的方法。
window
是全局变量,保存着 Window
的一个实例,表示包含文档的浏览器窗口(现代浏览器中通常不是真正的“窗口”,而是一个选项卡)。
您可以进行检查。
window instanceof Window
true
var x = Object.create(Window.prototype)
来创建一个 Window
实例,并且现在 x
是 Window
的一个实例。然而,由于它没有绑定到你浏览器中当前的窗口,因此 x
和已经存在的 window
实例不相同。因此,window
有更多的本地属性。例如,x.Location
将不存在,还有其他一些属性。 - NopeWindow
是用于创建 window
的构造函数。
要查看这一点,请尝试 alert(window.constructor === Window)
。
Window
添加一个变量时,它实际上是将其存储在Window
对象中,而不是像使用window.foo
一样创建全局变量。 - JonWindow.prototype
。 - SLaks来自Chrome浏览器的控制台输出:
console.log(window instanceof Window); // true
console.log(window.constructor === Window); // true
console.log(this); // Window {document:document, alert:ƒ, setTimeout:ƒ,..}
console.log(window); // Window {document:document, alert:ƒ, setTimeout:ƒ,..}
console.log(Window); // ƒ Window() { [native code] }
Window.foo = "Bar"; typeof foo;
->"undefined"
. 所以,不行。 - Felix KlingWindow.foo
访问变量,所以我从未注意到直接引用foo
的问题。 - JonWindow
上设置属性可以生效,这并不令人惊讶(因为它是一个对象)。 - Felix KlingWindow
。 - user456814