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. Yesterday, while I was at work, my sister stole my apple ipad and tested to see if it
    can survive a 25 foot drop, just so she can be a youtube sensation. My apple
    ipad is now destroyed and she has 83 views.
    I know this is completely off topic but I had to
    share it with someone!

  2. Thanks designed for sharing such a pleasant thought, piece of writing is
    nice, thats why i have read it completely

  3. I got this web page from my friend who shared
    with me about this web site and at the moment this time I am browsing this website and
    reading very informative articles or reviews at this place.

  4. I pay a quick visit daily some blogs and information sites to read
    articles or reviews, except this web site offers quality based
    articles.

  5. 소액결제현금화(휴대폰결제현금화 또는 정보이용료현금화라고도 불림)는
    휴대폰 소액결제 한도를 활용해 상품권이나 콘텐츠 이용료 등을 구매한
    뒤, 이를 다시 판매