命名空間曾經是ECMAScript(舊的ECMAScript 4)的考慮因素,但被取出。至於布蘭登·艾克說,在this message:爲什麼從ECMAScript中刪除名稱空間?
其中一個用例在 ES4命名空間是早期綁定(使用命名空間 固有的),無論是性能和 的程序員理解 - 運行時名稱沒有 機會綁定 不同意任何較早的 綁定。但是,在任何 動態代碼加載場景(如 )中的早期綁定,Web需要預先確定優先級或 預留機制,以避免早期對比後期綁定衝突 。
另外,像一些JS實現者 關切地注意到,多個打開的
命名空間強加運行成本,除非 實現工作
顯著困難。由於這些原因,命名空間和 早期綁定(像之前的包
他們,今年4月)必須去。
但我不確定我是否理解這一切。究竟什麼是優先或預約機制,爲什麼需要這些機制?另外,早期綁定和命名空間必須攜手並進嗎?出於某種原因,我無法圍繞所涉及的問題進行討論。任何人都可以嘗試更加充實的解釋嗎?
此外,名稱空間爲什麼會強加運行時成本?在我看來,我不禁感到命名空間和使用閉包的函數在概念上沒有什麼區別。例如,雅虎和谷歌都擁有YAHOO和谷歌對象,這些對象「充當」命名空間,因爲它們包含了所有公共和私有變量,函數以及單個訪問點中的對象。那麼,爲什麼命名空間在實現上會有如此大的不同呢?也許我只是對命名空間到底是什麼有個誤解。
因爲我想賞金着想知道兩件事情:
- 是否命名空間需要早期綁定?
- 名稱空間實現 與具有 私有成員的對象有什麼不同?
我也認爲有更重要的事情要關注,但我問了這個,因爲我不明白給出的原因。這裏也給出了ECMAScript中名稱空間模擬的例子,所以我更加困惑爲什麼命名空間是一個壞主意 – Bob 2010-03-09 15:10:51