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:
hello there and thank you for your information – I’ve definitely picked
up something new from right here. I did however expertise
some technical points using this site, as I experienced to reload
the web site a lot of times previous to I could get it to load properly.
I had been wondering if your web hosting is OK? Not that I am complaining,
but sluggish loading instances times will sometimes affect your placement in google
and can damage your high-quality score if advertising and marketing with Adwords.
Anyway I am adding this RSS to my email and can look out for much more of your respective interesting content.
Ensure that you update this again very soon.
Wonderful blog! I found it while surfing around on Yahoo News.
Do you have any suggestions on how to get listed in Yahoo News?
I’ve been trying for a while but I never seem to get there!
Cheers
Keep on writing, great job!