我知道這可能聽起來很基本,但忍受着我。我很好奇窗口對象的低層功能和意圖。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