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. Oh my goodness! Impressive article dude! Thank you so much, However I am encountering problems with your
    RSS. I don’t understand the reason why I am unable to join it.
    Is there anyone else getting identical RSS problems?
    Anyone who knows the answer will you kindly respond? Thanx!!

  2. I do believe all the concepts you’ve presented for your post.
    They’re very convincing and will certainly work. Nonetheless, the posts are too quick for beginners.
    Could you please extend them a little from next time? Thanks for the post.

    my website … testarea10

  3. I needed to thank you for this excellent read!!
    I definitely loved every little bit of it. I’ve got
    you bookmarked to look at new things you post…

    my blog :: testarea09

  4. Today, I went to the beach with my children. I found a sea shell and gave it to my 4 year
    old daughter and said “You can hear the ocean if you put this to your ear.” She put the shell to her ear and screamed.
    There was a hermit crab inside and it pinched her
    ear. She never wants to go back! LoL I know this is completely
    off topic but I had to tell someone!

  5. Heya are using WordPress for your site platform?
    I’m new to the blog world but I’m trying to get started and create my own. Do
    you require any coding knowledge to make your own blog?
    Any help would be greatly appreciated!

    Feel free to visit my web-site: testarea02

  6. Currently it appears like BlogEngine is the preferred blogging platform out there right
    now. (from what I’ve read) Is that what you’re using on your blog?

    Visit my site: testarea03