«Пространство имен» обнаружение коллизий в JavaScript? - PullRequest
1 голос
/ 31 октября 2010

Позволяет ли структурам JavaScript, имитирующим пространства имен, как jQuery, обнаруживать коллизии пространства имен? Если нет, то должен ли я сам управлять этим?

Если да, что мешает такой платформе самим обнаруживать такие столкновения?

Ответы [ 2 ]

5 голосов
/ 31 октября 2010

Пространства имен 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.");
}
1 голос
/ 31 октября 2010

Подумайте о разработке стандарта разработки, в котором вся команда договаривается о том, как вы будете называть свои пространства имен.Кроме того, я нашел полезным рассмотреть любые изменения в структуре данных или пространствах имен перед их фактической реализацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...