2016-03-07 2 views
0

У меня есть функция в JavaScript, который выглядит примерно так:Создание объектов неглобальное в JavaScript

foo=function(listenerObject) 
{ 
    a={count:0}; 
    foo2=function(){ 
    //does stuff with a 
    } 
    //register listenerObject to callback the function foo2 
} 

Проблема в том, что я в конечном итоге с помощью этой функции, чтобы зарегистрировать несколько слушателей, но все они в конечном итоге обмена такой же " a ". Есть ли способ сохранить декларацию объекта внутри функции из ползучего в глобальную область. Другими словами, я хотел бы, чтобы предотвратить возможность сделать что-то вроде этого

fun=function(){o={count:0}} 
o.count++//o is now in the global scope 

ответ

2

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

Пример:

var foo = function(listenerObject) { 
    var a = { count: 0 }; 
    ... 
}; 
Смежные вопросы