совет по пространству имен javascript - PullRequest
1 голос
/ 18 мая 2011

Я пишу приложение, которое стало довольно интенсивно использовать Javascript и сталкиваюсь с проблемами пространства имен.

Я знаю, что на эту тему есть много, но я все еще немного сбит с толку относительно того, как я должен поступить об этом.

Есть ли способ обернуть все мои классы и литералы объектов в пространство имен, и это лучший подход?

Я прочитал этот пост http://yuiblog.com/blog/2007/06/12/module-pattern/ и я хотел бы указать пространство имен для моего проекта, но не уверен, как это сделать, используя обычный javascript или jQuery.

edit: Я понимаю, что это не простой вопрос, потому что это вопрос личных предпочтений, стиля и требований.

Спасибо

Тим

Ответы [ 2 ]

2 голосов
/ 18 мая 2011

Лично я ненавижу, когда люди оборачивают все внутри оболочки функции () {}.Это в основном делает все приватным и не позволяет правильно добавлять патчи.

Вы всегда можете объявить один объект в глобальном пространстве имен:

var base = {
  class0:function(){}
};
base.subspace1 = {
  myVar:'foo'
};
base.class1 = function(){};

Кроме того, вы можете добавить этот объектдинамически, через вторичные файлы сценариев:

base.subspace2 = {};

Использование:

var foo = new base.class0();
var bar = base.subspace1.myVar;
2 голосов
/ 18 мая 2011

Статья в значительной степени подводит итог использования объекта «пространство имен» (есть также много других статей по этой теме). Обратите внимание, что вы можете получить точно такой же эффект, используя глобальные переменные и подчеркивание с той же схемой именования, поэтому:

var myLib = {
  method1: function()...,
  method2: function()...
};

или

function myLib_metod1()...
function myLib_metod2()...

эквивалентны с точки зрения столкновения "пространства имен". Тем не менее, я думаю, что использование объекта более аккуратно.

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