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. My developer is trying to persuade me to move to .net from PHP.
    I have always disliked the idea because of the expenses.
    But he’s tryiong none the less. I’ve been using WordPress on a number of websites for about a year and am worried
    about switching to another platform. I have heard fantastic things about blogengine.net.

    Is there a way I can import all my wordpress
    content into it? Any help would be really appreciated!

  2. Login sekarang di BEJOGAMING, startup game online terpercaya di Indonesia.
    Akses cepat, gameplay seru, dan layanan aman untuk semua pemain.

  3. Hello there I am so excited I found your blog, I really found you by accident, while I was looking on Google for
    something else, Anyhow I am here now and would just
    like to say thanks a lot for a fantastic post and a all round exciting blog (I also love the theme/design),
    I don’t have time to go through it all at the minute but I have book-marked it and also added in your RSS feeds, so when I have time I will be back to read much
    more, Please do keep up the great work.

  4. I know this if off topic but I’m looking into starting
    my own weblog 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 internet smart so I’m not 100% sure.
    Any tips or advice would be greatly appreciated.
    Many thanks