Sure that's the common explanation, but don't fall for it: globality has
everything to do with it.  If the singleton didn't care about creating
global state, it could just have `this.created = true;` for its *only*
internal state and have thrown exceptions from the constructor for any
subsequent calls.  That's the simplest way to ensure that only one instance
gets constructed.

In the browser, where there's no module system to stop your global
variables from spraying everywhere, any singleton can just as safely be
replaced by a simple single global instance instantiated normally.  There's
absolutely no difference in control or globality whatsoever, and you get
better performance by not making completely unnecessary getInstance() calls
just to get your instance.

The singleton pattern is really nothing more than a hack to get globals
into java via the global class namespace.  Even in java, it's pretty common
to solve the same problems with IoC containers now instead of singletons,
because global state is generally considered A Bad Thing (unless used
extremely judiciously).

G






On Tue, Nov 26, 2013 at 9:50 PM, dhtml <dhtmlkitc...@gmail.com> wrote:

>
>
> On Thursday, November 21, 2013 7:13:48 AM UTC-8, Gregg Caines wrote:
>
>
>> So how do you achieve the same effect in javascript?  In the browser, you
>> have globals.
>>
>
> The global object has nothing to do with web browsers.
>
>
>> If you want just one instance of a thing, create it, and set it to a
>> global variable.  You can use that global variable everywhere.  (If you're
>> thinking "but global variables are bad!", I mostly agree.  This is one of
>> the reasons that the singleton itself is actually considered an
>> anti-pattern by many.
>>
>> Singleton is necessary when the program must have at most one instance of
> an object; where having two would be a problem. In javascript, it's
> well-used where the initialization of that one object needs some variables
> or configuration to initialize itself.
>
> --
> --
> Job Board: http://jobs.nodejs.org/
> Posting guidelines:
> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> You received this message because you are subscribed to the Google
> Groups "nodejs" group.
> To post to this group, send email to nodejs@googlegroups.com
> To unsubscribe from this group, send email to
> nodejs+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/nodejs?hl=en?hl=en
>
> ---
> You received this message because you are subscribed to a topic in the
> Google Groups "nodejs" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/nodejs/GmUto9AN47U/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> nodejs+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to nodejs@googlegroups.com
To unsubscribe from this group, send email to
nodejs+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to nodejs+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to