我知道这可能听起来很基本,但忍受着我。我很好奇窗口对象的低层功能和意图。Javascript“窗口”:它的目的是什么?它有什么作用?
javascript窗口对象的目的是什么?它的核心功能是什么?我知道一切都存储在浏览器的窗口中。 SpiderMonkey(https://en.wikipedia.org/wiki/Mozilla#SpiderMonkey)没有默认定义的窗口,所以它必须是浏览器对象。
它的用途是什么?
我知道这可能听起来很基本,但忍受着我。我很好奇窗口对象的低层功能和意图。Javascript“窗口”:它的目的是什么?它有什么作用?
javascript窗口对象的目的是什么?它的核心功能是什么?我知道一切都存储在浏览器的窗口中。 SpiderMonkey(https://en.wikipedia.org/wiki/Mozilla#SpiderMonkey)没有默认定义的窗口,所以它必须是浏览器对象。
它的用途是什么?
窗口是在任何浏览器的应用程序在全球范围内。您的代码从窗口运行。当您在浏览器中打开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
如果有要跨范围共享变量或常数(或任何值,对于这个问题),可以在window--定义变量,那么您可以从访问这些值任何功能。喜欢这个!
变种X =“你好” 变种Y =“世界”
var greeting = function(){
console.log(x);
}
var toGreet = function(){
console.log(y);
}
greeting(); // logs 'Hello'
toGreet(); // logs ' world'
不幸的是,范围概念已经比这更深,但是这应该给你的窗口是什么好主意。 ..只是旁白:通常最好不要将变量保存在窗口中,因为您可能会意外地在一个函数中改变它们,但在另一个函数中需要它们。在函数之间共享变量的最佳方式是将其作为参数传递给函数。
如果您想了解更多关于范围和关闭的信息,请查看this blog!
当您为网页进行客户端编程时,window
对象是一个特殊的对象,它也恰好是JavaScript执行的全局范围。
window.document
。window.location
和window.history
。window.navigator
同样,还有的属性,方法,事件多如牛毛,而对象则可以通过window
对象访问。下面是一些参考:
你可以使用Object.getOwnPropertyNames(window)查看给定浏览器的全部内容;即使在about:blank左边,窗口在Chrome和Firefox中定义了500多个属性,在IE 10中定义了300多个属性。其中几十个实际上对于制作应用程序非常有用。 – dandavis
'“有必要访问你正在尝试使用JavaScript编程的页面,窗口对象就是那个”'。并非如此,“页面”由* document * object(* cf * DOM)表示,与* window *完全不同。 – RobG
@RobG:注意谢谢。我写了答案对新手JavaScript程序员有帮助。我已经更新了答案。 – Krumia
东西必须在路的尽头......窗口是浏览器的东西,但几乎所有的运行时都为全局对象提供了一个类似的别名。 – dandavis
有人应该为这个问题做一个好的2班轮。 – frenchie
为什么浏览器工具(open(),prompt()等)无法从window.browser移出,或者导航器等现有名称是历史问题。考虑到早期网络的匆忙,很可能原本没有一个完美的设计和计划。 – dandavis