2009-09-15 7 views
1

Я использую mootools-1.2.3 на данный момент, и мне трудно получить переменную, доступную вне функции.Сделать переменную Javascript глобальной w/MooTools

Мне нужно определить переменную в функции domready, потому что в противном случае DOM не был загружен, а функции селектора не будут работать (я не могу поместить скрипт в конец HTML-кода, у меня нет контроля когда структура записывает ссылки на внешние скрипты).

Есть ли способ ссылки на одну и ту же переменную в другой функции?

window.addEvent('domready', function() { 
    var myVar = new myClass('someURL', 'elementSelectorString'); 
    document.addEvent('click', function(event) { 
     myVar.doSomeStuff(var1, var2); 
    }); 
}); 

window.addEvent('unload', function(event) { 
    // Reference to myVar variable in domready function. 
    myVar.cleanUpStuff(); 
}); 

ответ

4

Положите var myVar; на верхнем уровне (выше addEvents), и удалите var из domready функции , Переменные видимы в пределах области, в которой они объявлены.

+0

Просто исключение ключевого слова var в целом также будет делать трюк. –

+1

Действительно, хотя некоторые более педантичные среды JS дадут вам предупреждение о том, что вы используете необъявленный глобальный (правильно, как это часто бывает ошибкой). – bobince

2

глобальные переменные являются фактически свойства объекта окна, так что вы можете использовать:

window.myVar 
0

Просто укажите myVar без ключевого слова var. Отсутствие var во время назначения подразумевает глобальное.

window.addEvent('domready', function() { 
    myVar = new myClass('someURL', 'elementSelectorString');