2013-03-15 3 views
3

Я понимаю теоретическую концепцию закрытия Javascript, как и переменную, к которой может быть доступна только внутренняя функция и все такое ... так что это реализация частной переменной в JS.Практическое применение/примеры закрытия Javascript

Но я хотел бы понять некоторые практические примеры, где закрытие действительно полезно. Поэтому мне нужен пример, чтобы не понимать, что такое закрытие, но практические примеры использования Closure.

+0

Возможный дубликат [Как работает закрытие JavaScript?] (Http://stackoverflow.com/questions/111102/how-do-javascript-closures-work) Я думаю, что этот вопрос должен был быть закрыт, а также не был конструктивным , но он здесь. – gdoron

+0

Этот вопрос может быть более подходящим для [programers.se]. Это кажется слишком открытым. –

+0

Две вещи 1), так что их значения не могут быть изменены непреднамеренно другими функциями, обращающимися к ним. 2) Что произойдет, если вы установили плагин для браузера, который использует javascript, имеет глобальную переменную с тем же именем, что и ваша переменная? – gaurav

ответ

8

Два стандартных примеры:

1) учет переменных для обратных вызовов:

var a = [1, 2, 3]; 
    for (var i=0; i<a.length; i++) { 
     (function(j){ 
      setTimeout(function(){ 
      console.log(a[j]); 
      }, 1000*j); 
     })(i); 
    } 

2) переменных учет частных

var obj = (function(){ 
    var private = 0; 
    return { 
     increment: function(){ private++; }, 
     getValue: function(){ return private; } 
    } 
})(); 

На самом деле проще всего запомнить один вещь: что такое ac losure, то есть ссылка от функции на область, в которой она была создана. Эта ссылка препятствует тому, чтобы область (и ее переменные) была обманута, и это единственная доступная ссылка на эту область (следовательно, конфиденциальность).

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