Javascript 窗户和窗户有什么区别?
什么是Javascript 窗户和窗户有什么区别?,javascript,dom,Javascript,Dom,什么是窗口 以下是我在Chrome控制台上看到的内容: window Window {top: Window, window: Window, location: Location, external: Object, chrome: Object…} Window function Window() { [native code] } 窗口是用于创建窗口的构造函数 要查看这一点,请尝试警报(window.constructor==window)是一个函数,
窗口
以下是我在Chrome控制台上看到的内容:
window
Window {top: Window, window: Window, location: Location, external: Object,
chrome: Object…}
Window
function Window() { [native code] }
窗口
是用于创建窗口
的构造函数
要查看这一点,请尝试警报(window.constructor==window)
是一个函数,如您所见。它是windows的构造函数(但不能直接使用构造函数构建新窗口,通常使用函数)<代码>窗口。原型(prototype因此保存了可以在窗口上调用的方法)
window
是包含window
实例的全局变量,它表示包含文档的浏览器窗口(通常不是真正的“窗口”,而是现代浏览器中的选项卡)
你可以查一下
window instanceof Window
是
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”;foo类型代码>->
未定义“
。所以不,这不起作用。@Felix Kling我一直在通过Window.foo
访问变量,所以我从来没有注意到直接引用asfoo
的问题。好吧,这只是表明在Window
上设置属性是有效的,这并不奇怪(因为它是一个对象)。同意,似乎我应该早点注意到发生了什么。在将来,像这样的问题可以通过做一些研究来改进,比如查找。这是完全有意义的。因此,当我向窗口
添加变量时,它实际上是将其存储在窗口
对象中,而不是像使用Window.foo
那样实际生成全局变量。正确。Javascript区分大小写;它们只是大小写不同这一事实是无关紧要的。要想进一步混淆,请尝试Window.prototype
。为什么人们会说alert,为什么不说console.log?构造函数?为什么new Window()返回错误?@zloctb因为脚本不能以这种方式构建新窗口,它们必须使用Window.open函数。@zloctb:您可以执行var x=Object.create(Window.prototype)
,而x现在是Window
的一个实例,x
与现有的窗口
实例不同,因为它未“绑定”到浏览器中的当前窗口。因此,窗口
还有几个本地属性。例如,x.Location
将不存在于其他内容中。它是的副本,但您的答案实际上更好。我们是否应该将另一个问题作为这个问题的重复来结束?另一方面,另一个问题的措辞更为恰当。我将标记合并。
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] }