Лучший шаблон для именования свойств с помощью jQuery - PullRequest
1 голос
/ 03 апреля 2012

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

Вот пример того, что я делаю:

   var myNamespace = myNamespace || {};

   $.extend(true, myNamespace, {
      subNamespace: {

      }
   });

   $.extend(true, myNamespace.subNamespace, {
      data: {}
   });

   $(document).ready(function () {
      myNamespace.subNamespace.data = "Value as string";

      alert(myNamespace.subNamespace.data);
   });

Как видите, имя свойства в данном случае - «data».

Это хороший подход для реализации свойств в пространстве имен с помощью javascript, jquery?

Спасибо

Ответы [ 3 ]

1 голос
/ 03 апреля 2012

Адди Османи - великий автор лучших методик проектирования Javascript с несколькими бесплатными электронными книгами и бесчисленными публикациями в блогах на такие темы, как пространство имен.

Раньше он работал инженером JS в AOL, но недавно объявил, что переходит на Google.

Вот ссылка специально на главу «Пространство имен» в одной из его книг, но я предлагаю вам также проверить его главную страницу.

http://addyosmani.com/resources/essentialjsdesignpatterns/book/#detailnamespacing

1 голос
/ 03 апреля 2012

Есть ли какая-то конкретная причина, по которой вы используете jQuery.extend для добавления глубины?На первый взгляд, вы могли бы также определить пространство имен с помощью объекта singleton:

var myNamespace = {
    subNamespace: {
        data: "Value as string"
    }
};
0 голосов
/ 03 апреля 2012

Если вам нужно использовать extend(), потому что объект NameSpace уже существует, то используйте deep extension в полной мере:

$.extend( true, NameSpace, {
    subNameSpace : {
        data : {}
    }
});

К сожалению, вопрос о том, как правильно назвать свой объект, у вас полностью зависит от проекта. Разве данные не должны касаться других разработчиков? Если нет, тогда одним условием является использование подчеркивания в начале имени. Сколько у вас будет subNameSpace, и будет data зависеть от одного или всех из них.

Если вы собираетесь использовать пространство имен вне объекта jQuery, вам необходимо определить, будет ли метод работать самостоятельно или на множестве выбранных объектов. Если первое, то просто расширяйте jQuery, а если второе, то расширяйте jQuery.fn.

...