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. hello there and thank you for your information – I’ve definitely picked
    up something new from right here. I did however expertise
    some technical points using this site, as I experienced to reload
    the web site a lot of times previous to I could get it to load properly.
    I had been wondering if your web hosting is OK? Not that I am complaining,
    but sluggish loading instances times will sometimes affect your placement in google
    and can damage your high-quality score if advertising and marketing with Adwords.
    Anyway I am adding this RSS to my email and can look out for much more of your respective interesting content.

    Ensure that you update this again very soon.

  2. Wonderful blog! I found it while surfing around on Yahoo News.
    Do you have any suggestions on how to get listed in Yahoo News?
    I’ve been trying for a while but I never seem to get there!
    Cheers