簡體   English   中英

JavaScript中的“命名空間”沖突檢測?

[英]“Namespace” collision detection in JavaScript?

模仿jQuery之類的名稱空間的JavaScript框架是否進行某些名稱空間沖突檢測? 如果不是,我應該自己管理嗎?

如果是,是什么阻止此類框架自己檢測到此類沖突?

JavaScript名稱空間通常使用對象和閉包來模仿,並且通常使用自調用函數進行初始化:

var myNamespace = (function () {
   var _name = 'Bob';

   return {
      somePublicMethod: function () {
         return 'Hello, ' + _name;
      }
   };
})();

alert(myNamespace.somePublicMethod());

不幸的是,如果您重新定義名稱空間變量,則不會發出任何警告。 您真正可以做的是檢查名稱空間變量是否已經定義,如果是,則拋出異常或引發錯誤:

if (typeof myNamespace !== 'undefined') {
    var myNamespace = (function () {
        // ...
    })();
}
else {
    throw new Error("Whoops! myNamespace already exists.");
}

考慮提出一個開發標准,整個團隊就您如何調用命名空間達成一致。 此外,我發現在實際實現對數據結構或名稱空間的任何更改之前進行檢查很有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM