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. Thanks for ones marvelous posting! I seriously enjoyed reading it,
    you happen to be a great author. I will be sure to bookmark your blog and definitely will come back very soon. I want to encourage you
    to continue your great writing, have a nice weekend!

  2. I do not know if it’s just me or if perhaps everybody else
    encountering issues with your website. It appears
    as if some of the text on your content are running off
    the screen. Can somebody else please comment and let me know if this is happening to them too?
    This might be a issue with my web browser because I’ve had this happen previously.
    Many thanks