Как сохранить глобальное значение (не обязательно глобальная переменная) в jQuery?

В настоящее время я работаю над веб-страницей прежней версии, которая использует тонну JavaScript, jQuery, клиент Microsoft JavaScript и другие библиотеки. Нижняя строка - я не могу переписать всю страницу с нуля, поскольку бизнес не может выровнять по ширине ее. Так... что есть, то есть. Так или иначе я должен загрязнить (я действительно попробовал не также), глобальное пространство имен с переменной. Существует эти три опции, я думал о -

  1. Просто храните/получайте его с помощью нормального объявления JavaScript - var x = 0;

  2. Используйте jQuery для хранившего/получения значения в теге DOM - $("body").data("x", 0);

  3. Используйте скрытое поле формы и установите/получите значение с jQuery - $("whatever").data("x", 0);

Существует ли лучший путь? Я посмотрел на существующую груду кода, и я не полагаю, что переменная может быть ограничена по объему в функции.

80
задан user2864740 3 September 2014 в 23:35
поделиться

4 ответа

Вы можете создать пространство имен внутри объекта jQuery, например:

$.mynamespace = { 
    myVar : "something", 
    myVar2 : "somethingElse" 
}; 

или:

$.mynamespace = {};
$.mynamespace.myVar = "something";
$.mynamespace.myVar2 = "somethingElse";

Имейте в виду, что любой метод подключаемого модуля с именем 'mynamespace' будет перезаписан, поэтому обязательно используйте разумное имя.

100
ответ дан 24 November 2019 в 09:56
поделиться

Вы можете создать хэш в глобальной области видимости и использовать его как пространство имен:

MyNamepace={}
MyNamespace.newvar = 'value'
// MyNamespace.newvar => 'value'
6
ответ дан 24 November 2019 в 09:56
поделиться

Просто поделившись с вами своей практикой, я бы сделал глобальный объект / 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';

​​Эти переменные будут доступны вам на всем сайте после их инициализации.

Надеюсь, это поможет.

2
ответ дан 24 November 2019 в 09:56
поделиться

Для меня лучший способ справиться с этой ситуацией - определить объект в объекте окна:

window.my_config =
{
    my_var1 : 1,
    my_var1 : 2,
    my_var1 : 3
};

Это позволит сохранить вашу область видимости чистой и аккуратной. И всякий раз, когда вы обращаетесь к глобалу с помощью window.my_config , любой, кто смотрит на код, будет знать, что осуществляется доступ к глобалу.

38
ответ дан 24 November 2019 в 09:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: