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. Oh my goodness! Impressive article dude! Thank you so much, However I am encountering issues with your RSS.
    I don’t know why I am unable to join it. Is there anybody else getting
    the same RSS issues? Anyone who knows the solution will
    you kindly respond? Thanx!!

    My blog – slot win

  2. I have been exploring for a little bit for any high quality articles or blog posts on this sort of house .
    Exploring in Yahoo I finally stumbled upon this website.
    Reading this information So i’m happy to show that I’ve an incredibly good uncanny feeling I discovered just what I
    needed. I so much without a doubt will make sure to don?t forget this
    website and provides it a look on a constant basis.

  3. I do not even know the way I stopped up here,
    but I thought this put up used to be good. I don’t recognize who you’re however certainly you’re going to a famous blogger should you aren’t already.
    Cheers!

  4. Today, while I was at work, my cousin stole my iPad and tested to see if it
    can survive a thirty foot drop, just so she can be a youtube sensation. My
    iPad is now destroyed and she has 83 views. I know this is completely off topic but I had to share it with someone!