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. Hi there, all the time i used to check web site posts here early in the morning, for the reason that i love to find out more and more.

  2. A person essentially assist to make seriously
    articles I’d state. This is the very first time I frequented your web page and up to now?
    I surprised with the analysis you made to create this actual publish
    amazing. Fantastic task!

  3. Have you ever considered creating an ebook or guest authoring on other blogs?
    I have a blog based upon on the same ideas you discuss and would love to have you
    share some stories/information. I know my readers would appreciate your
    work. If you are even remotely interested, feel free to send me
    an e-mail.

  4. Hiya! Quick question that’s completely off topic. Do you know how to make your site
    mobile friendly? My web site looks weird when browsing from my apple iphone.
    I’m trying to find a theme or plugin that might be able to
    correct this problem. If you have any recommendations, please share.

    With thanks!