Показать сообщение отдельно
  #2 (permalink)  
Старый 05.02.2014, 18:12
Аспирант
Отправить личное сообщение для jsgeek Посмотреть профиль Найти все сообщения от jsgeek
 
Регистрация: 13.02.2013
Сообщений: 34

Флэнаган хорошо описал принцип работы замыканий.
Из примеров использования? Инкапсуляция.
function user(name, password, karma) {
  return {
    getName: function() {return name;},
    setName: function(s) {return name = s;},

    checkPassword: function(pwd) {return pwd === password},

    getKarma: function() {return karma;},
    upKarma: function(n) {return karma += n;},
    downKarma: function(n) {return karma -= n;}
    
  };
}
var usr1 = user("Вася", "pass", 1);

usr1.getName(); // => "Вася"
usr1.setName("Петя");
usr1.getName(); // => "Петя"

usr1.checkPassword("123"); // => false
usr1.checkPassword("pass"); // => true
// ...


PS.
это только пример. в ES5 инкапсулировать лучше с помощью атрибутов свойств.
Ответить с цитированием