Показать сообщение отдельно
  #2 (permalink)  
Старый 28.07.2013, 21:00
Аспирант
Отправить личное сообщение для Logo Посмотреть профиль Найти все сообщения от Logo
 
Регистрация: 15.03.2008
Сообщений: 91

Например, можно назначить обработчик вот так.
function test() {
  var text = "hello!"
  document.onclick = function() {
    alert(text);
  }
}

test()

При клике выведется "hello!", т.к. функция-обработчик имеет замыкание на переменную text. Любые другие колбеки, такие как setTimeout или ajax запросы также будут иметь доступ к переменным функции, это основной способ передать в колбек.

function deferedAlert(text) { // функция, выводящая сообщение через 3 секунды
  setTimeout(function (){ alert(text) }, 3000)
}

deferedAlert("hello")


Действительно, можно реализовать private свойства в функции-конструкторе объекта (protected обычно реализуется соглашением, что с _ начинаются protected методы)

function SomeClass() {
  var self = this;
  var private = "private";

  self.alert = function() {
    alert(private)
  }
}

Подробнее в статьях про ООП в JS на этом сайте.
Ответить с цитированием