Singletons in JavaScript

Various ways of using singletons in JavaScript, with their pros and cons