Тема: Singleton .
Показать сообщение отдельно
  #7 (permalink)  
Старый 06.10.2009, 18:25
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от Kolyaj
// Здесь S нужен
Сообщение от Kolyaj
// А здесь не нужен
Ну, всё правильно (даже, если динамически, по условию):

if (...) {
  var S = {};
} else {
  ...
}


В любом случае (и в твоей реализации тоже), переменная "S" уже будет в объекте переменных.

Ещё преимуществом можно выделить частые подобные проверки с if-ми-else-ами. Чтобы каждый раз не проверять, инициализирован ли уже объект (if typeof S !== 'undefined'), можно вынести его в геттер (который и называется в данном случае "Singleton"):

function getOurObject() {
  if (!arguments.callee.instance) {
    arguments.callee.instance = {...};
  }
  return arguments.callee.instance;
}


В общем, два преимущества:

1. Наследование (если нужно);
2. Улучшение code-reuse, чтобы сократить код (этот пункт, в данном случае, является разновидностью memoization).
__________________
Тонкости ECMAScript
Ответить с цитированием