我知道这可能听起来很基本,但请耐心等待。我很好奇窗口对象的低级功能和意图。
javascript窗口对象的用途是什么?它的核心功能是什么?我知道一切都存储在浏览器的窗口中。 SpiderMonkey(https://en.wikipedia.org/wiki/Mozilla#SpiderMonkey)默认没有定义窗口,因此它必须是浏览器对象。
它的目的是什么?
答案 0 :(得分:1)
Window是任何浏览器应用程序中的全局范围。您的代码从窗口运行。当您在浏览器中打开javascript控制台并开始编码时,您将从窗口范围开始工作。话虽如此,这只是封闭范围的冰山一角。您调用的每个函数都将拥有它自己的闭包(闭包只是运行函数代码的环境的一个奇特的词)。从窗口调用的两个函数将无法访问每个其他闭包,但是它们可以访问其父作用域,在本例中为窗口。例如:
var x = 'hello' // saves 'hello' as variable x in window/ global scope
var greeting = function(){
console.log(x);
var y = ' world'; // stores ' world' as y in greeting closure scope
}
var toGreet = function(){
console.log(y);
}
greeting(); // logs 'Hello', stores ' world' as variable y in greeting closure scope
toGreet(); // Errors, because y is undefined. toGreet does not have access to greetings closure scope
如果您想要跨范围共享变量或常量(或任何值),您可以在窗口中定义该变量 - 然后您可以从任何函数访问这些值。喜欢这个!
var x ='你好' var y =' world'
var greeting = function(){
console.log(x);
}
var toGreet = function(){
console.log(y);
}
greeting(); // logs 'Hello'
toGreet(); // logs ' world'
不幸的是,范围的概念比这更深刻,但是这应该让你对窗口的内容有一个很好的了解......而且只是旁白:通常,最好不要保留变量在窗口中,因为你可能会在一个函数中意外地改变它们,但在另一个函数中需要它们。跨函数共享变量的最佳方法是将其作为参数传递给函数。
如果您想了解有关范围和闭包的更多信息,请查看this blog!
答案 1 :(得分:0)
当您为网页进行客户端编程时,window
对象是一个特殊对象,也恰好是JavaScript执行的全局范围。
window.document
。window.location
和window.history
。window.navigator
同样,您可以通过window
对象访问过多的属性,方法,事件和对象。以下是一些参考文献: