2013-04-15 19 views
0

我想知道Javascript如何維護一個全局命名空間。它是否有鏈接器鏈接所有與該頁面相關的JS並且維護一個單一的全局名稱空間?Javascript如何維護一個全局命名空間

+0

閱讀此:http://stackoverflow.com/questions/9773964/understanding-the-javascript-global-namespace-and-closures –

+0

這應該有所幫助:http://stackoverflow.com/questions/9773964/understanding- -javascript-global-namespace-and-closures – karthikr

+0

保持每個腳本元素完全獨立並不難嗎?尤其是因爲他們都需要與同一個DOM進行交互。 – Quentin

回答

2

這裏要理解的重要一點是,頁面中的所有JavaScript(無論是內嵌的還是通過<script src="...">拉入的)基本上都是在同一個VM中連接並執行的。沒有必要「維護單個全局名稱空間」,因爲所有代碼都在同一地點進行評估並共享相同的全局對象window

請記住,儘管現代引擎do compile JS to native code在內部,但JS不是像C這樣的編譯語言。因此,沒有鏈接器。

您可能想要了解的虛擬機概念稱爲context。 V8 VM支持使用一個全局對象以及使用不同全局對象的代碼的運行代碼。這允許在中運行的代碼獲取其自己的全局對象,但仍然可以從父頁面的上下文訪問和調用方法。