JavaScript: глобальная область - PullRequest
9 голосов
/ 16 июля 2010

В настоящее время я создаю файл .js с большим количеством функций, а затем связываю его со своими HTML-страницами.Это работает, но я хочу знать, как лучше (хорошие практики) вставлять js на мои страницы и избегать конфликтов с областью видимости ... Спасибо.

Ответы [ 4 ]

13 голосов
/ 16 июля 2010

Вы можете заключить их в анонимную функцию, такую ​​как:

(function(){ /* */ })();

Однако, если вам нужно повторно использовать все функции javascript, которые вы написали в другом месте (в других скриптах), вылучше создать единый глобальный объект, к которому они могут быть доступны.Либо как:

var mySingleGlobalObject={};
mySingleGlobalObject.someVariable='a string value';
mySingleGlobalObject.someMethod=function(par1, par2){ /* */ };

или альтернативный, более короткий синтаксис (который делает то же самое):

var mySingleGlobalObject={
  someVariable:'a string value',
  someMethod:function(par1, par2){ /* */ }
};

Позже к этому можно будет обратиться из других скриптов, таких как:

mySingleGlobalObject.someMethod('jack', 'jill');
10 голосов
/ 16 июля 2010

Простая идея - использовать один объект, представляющий ваше пространство имен:

var NameSpace = {
    Person : function(name, age) {

    }
};

var jim= new NameSpace.Person("Jim", 30);
6 голосов
/ 16 июля 2010

Лучший способ - создать новую область и выполнить там свой код.

(function(){
  //code here
})();

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

1 голос
/ 16 июля 2010

Возможно, это не ЛУЧШИЙ способ, но многие системы PHP (я смотрю на вас, Drupal) берут имя своего конкретного плагина и добавляют его ко всем именам своих функций. Вы можете сделать что-то подобное, добавив имя вашей способности к именам функций - "mything_do_action ()"

В качестве альтернативы, вы могли бы использовать более «ОО» подход, создать объект, который инкапсулирует ваши возможности, и добавить все ваши функции в качестве функций-членов в ИТ. Таким образом, есть только одна вещь, о которой нужно беспокоиться в глобальном масштабе.

...