В настоящее время я работаю над веб-страницей прежней версии, которая использует тонну JavaScript, jQuery, клиент Microsoft JavaScript и другие библиотеки. Нижняя строка - я не могу переписать всю страницу с нуля, поскольку бизнес не может выровнять по ширине ее. Так... что есть, то есть. Так или иначе я должен загрязнить (я действительно попробовал не также), глобальное пространство имен с переменной. Существует эти три опции, я думал о -
Просто храните/получайте его с помощью нормального объявления JavaScript - var x = 0;
Используйте jQuery для хранившего/получения значения в теге DOM - $("body").data("x", 0);
Используйте скрытое поле формы и установите/получите значение с jQuery - $("whatever").data("x", 0);
Существует ли лучший путь? Я посмотрел на существующую груду кода, и я не полагаю, что переменная может быть ограничена по объему в функции.
Вы можете создать пространство имен внутри объекта jQuery, например:
$.mynamespace = {
myVar : "something",
myVar2 : "somethingElse"
};
или:
$.mynamespace = {};
$.mynamespace.myVar = "something";
$.mynamespace.myVar2 = "somethingElse";
Имейте в виду, что любой метод подключаемого модуля с именем 'mynamespace' будет перезаписан, поэтому обязательно используйте разумное имя.
Вы можете создать хэш в глобальной области видимости и использовать его как пространство имен:
MyNamepace={}
MyNamespace.newvar = 'value'
// MyNamespace.newvar => 'value'
Просто поделившись с вами своей практикой, я бы сделал глобальный объект / var в необходимом файле JavaScript. с разумным префиксом, например, если я работаю над страницей, где этот объект будет текстовым полем, я бы назвал его:
g_TxtMyValue = 'value'; // g_ specifies it to be a global variable, it is one
// of the many conventions used
Если у вас есть более одной глобальной переменной, вы также можете иметь пространство имен, например:
my_txt = {}; // For a real site I would use a prefix relative to the project
// name instead of "my".
my_txt.testValueOne = 'Value one';
my_txt.testValueOne = 'Value two';
Эти переменные будут доступны вам на всем сайте после их инициализации.
Надеюсь, это поможет.
Для меня лучший способ справиться с этой ситуацией - определить объект в объекте окна:
window.my_config =
{
my_var1 : 1,
my_var1 : 2,
my_var1 : 3
};
Это позволит сохранить вашу область видимости чистой и аккуратной. И всякий раз, когда вы обращаетесь к глобалу с помощью window.my_config
, любой, кто смотрит на код, будет знать, что осуществляется доступ к глобалу.