Главное меню:



Satus — это простая CMS
Комментарии:
    25.12.11 18:13 Написал(а) Селиван (из города Северное)
Хороший блог, однако стоит больше добавлять информации
читать статью »
    10.12.11 16:52 Написал(а) Вася (из города Белгород)
хА. приколько
читать статью »
    29.11.11 13:35 Написал(а) Марианна (из города Кулебаки)
Есть моменты, когда все удается, не ужасайтесь - это пройдет.
читать статью »
    09.11.11 19:12 Написал(а) Капитон (из города Кадуй)
Да, действительно. Так бывает. Можем пообщаться на эту тему.
читать статью »

 
Синглтоны Javascript

О том, как создавать в javascript объекты, написано довольно много:

http://habrahabr.ru/blogs/javascript/48542/

http://habrahabr.ru/blogs/webdev/38642/

 

потому я не буду пересказывать здесь все заезженные способы, а лишь покажу собственную технику создания объектов-одиночек (синглтонов)..

 

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

var instance = (function(){

  var public = {}, draw, some;

  draw = public.draw = function(){

    // делаем что-нибудь..

  };

  some = function(){

    // делаем что-нибудь

  };

  return public;

})();

...

instance.draw();

 

здесь создается объект instance, у которого есть приватный метод some()  и публичный метод draw()..

как видно, нет ничего сложного в объялении свойств и методов: и публичные, и приватные свойства и методы объявляются внутри функции-обертки..

разница лишь в том, что публичные свойства и методы мы дублируем в переменную public, которая будет отдана объекту..

 

некоторые спросят: а зачем вообще нужны синглтоны, зачем нужна инкапсуляция?

понимание необходимости рассмотрим на бытовом примере..

например, нужен онлайн-калькулятор чего-нибудь, калькулятор должен:

-- считать что-нибудь,

-- хранить промежочные значения чего-нибудь,

-- хранить параметры отображения, настройки и т.п. служебную информацию..

 

если подумать логически.. ведь будет очень удобно, если все данные (свойства) будут хранится в одном месте (объекте), и будет не менее удобно, если весь функционал (методы) будут хранится там же.. содержание данных и функционала в одном объекте улучшает понимание и упрощает разработку модели.. и к тому же это не засоряет глобальный name space..

 

итак, что нужно для создания объекта?.. очевидно, класс, фабрика объектов.. а сколько объектов класса у нас в принципе будет? очевидно, только один -- ведь зачем нам 10 калькуляторов на странице?.. тогда очевидно, что паттерн программирования синглтон тут окажется как никак кстати.. :-)

 

инкапсуляция (сокрытие) данных нам тоже очень пригодится, чтобы сторонние скрипты не имели доступа к служебной информации и данным нашего калькулятора..

 

Комментариев к статье нет..
[ Добавить ] комментарий
Поля с пометкой * обязательны для заполнения

*Ваше имя
  Ваш сайт  
  Ваш город
*Ваше сообщение

Код подтверждения
*Код с картинки   @
код на картинке содержит только цифры (0..9) и буквы англ. алфавита (A..Z)