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. Excellent blog! Do you have any suggestions for aspiring writers?
    I’m hoping to start my own blog soon but I’m a little lost on everything.
    Would you propose starting with a free platform like WordPress or go for
    a paid option? There are so many choices out there that I’m completely confused
    .. Any suggestions? Cheers!

  2. With havin so much content do you ever run into any issues of plagorism or copyright violation? My site has
    a lot of exclusive content I’ve either written myself or outsourced but it looks like a lot of
    it is popping it up all over the internet without my agreement.
    Do you know any ways to help stop content from being stolen? I’d genuinely appreciate it.

  3. We absolutely love your blog and find many of
    your post’s to be just what I’m looking for. Do you offer guest writers to write
    content for you personally? I wouldn’t mind composing
    a post or elaborating on most of the subjects you write concerning here.
    Again, awesome blog!

  4. Good day! This is my first visit to your blog!
    We are a group of volunteers and starting a new initiative in a community in the same niche.
    Your blog provided us beneficial information to work on. You have done a outstanding job!

  5. I know this if off topic but I’m looking into starting my own blog and was wondering what all is needed to get setup?
    I’m assuming having a blog like yours would cost a pretty penny?

    I’m not very web savvy so I’m not 100% certain. Any suggestions or advice
    would be greatly appreciated. Thanks