CoffeeScript lazy singleton class instance function

Explanation

“@instance:” allows us to attach an object/value to the Foo class instead of Foo’s prototype. Recall that “@” in CoffeeScript refers to JavaScript’s “this”.

After “@instance:” there is a function that is immediately executed. This function returns a function, closed around a variable called instance. Both these functions have their context (their “this”) bound to the Foo object using CoffeeScript’s wonderful “define and bind” operator “=>” as opposed to the normal function definition operator “->”.

When called, the function that “@instance” ends up referring to simply checks to see if the “instance” variable is empty and if so, assigns a new instance of Foo to it. Newing up a Foo is done using the “@” symbol since the function’s “this” refers to the Foo object. It then returns the instance.

Output

The CoffeeScript above compiles down to this:

23,235 thoughts on “CoffeeScript lazy singleton class instance function

  1. Hmm is anyone else encountering problems with
    the images on this blog loading? I’m trying to find
    out if its a problem on my end or if it’s the blog.
    Any feed-back would be greatly appreciated.

  2. Wow, wonderful weblog format! How long have you been blogging for?
    you made blogging look easy. The whole glance of
    your site is wonderful, as neatly as the content!

  3. Hmm it seems like your website ate my first comment (it was super long) so I guess I’ll
    just sum it up what I wrote and say, I’m thoroughly enjoying your blog.
    I as well am an aspiring blog writer but I’m still new to the whole thing.
    Do you have any tips and hints for beginner blog writers? I’d really appreciate it.

  4. Thanks for sharing your info. I really appreciate your efforts and I am waiting
    for your next write ups thank you once again.

  5. Appreciating the time and energy you put into your website and detailed information you provide.
    It’s great to come across a blog every once in a while that isn’t the same out of
    date rehashed information. Fantastic read!

    I’ve bookmarked your site and I’m adding your RSS
    feeds to my Google account.