2010-07-16 2 views
9

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

+1

HTTP: //javascript.crockford.com/code.html – Anders

ответ

1

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

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

+0

Я пытаюсь изучить OO с помощью JavaScript, но мне это сложно. Есть много синтаксиса, чтобы сделать простой «класс» или что-нибудь еще в JavaScript :) Спасибо. – thomas

6

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

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

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

В принципе, это определяет анонимную функцию, дает ей новую область и вызывает ее.

+0

Что означает «()»? Любая ссылка об этом? А как насчет window.onload? Где я должен это поставить? Есть ли что-то в стиле бутстрапов в JavaScript? Спасибо. – thomas

+0

Лично я считаю, что легче понять анонимную функцию, если вы видите все это на одной строке. К сожалению, у меня нет комментариев в комментариях, но если вы думаете об этом так: это похоже на выполнение уже существующей функции, но вместо того, чтобы использовать имя функции, вы помещаете определение функции в скобки. – lucideer

+0

Вы можете это сделать, например: (function (param) {/ * * /}) ('значение параметра'); – lucideer

9

Простая идея состоит в том, чтобы использовать один объект, который представляет пространство имен:

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

    } 
}; 

var jim= new NameSpace.Person("Jim", 30); 
12

Вы можете обернуть их в анонимной функции, как:

(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');
+0

Я думаю, что безопаснее всегда сворачивать ваш код с помощью функции() {/ * * /})(); на всякий случай, если вы включите скрипт, который сильно прерван. Тогда, я думаю, вы могли бы добавить свой mySingleGlobalObject к «документу», например, поделиться им с другими скриптами. – endavid

Смежные вопросы