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. Howdy, I do think your site might be having browser compatibility problems.
    Whenever I look at your website in Safari, it looks
    fine however when opening in Internet Explorer, it’s
    got some overlapping issues. I merely wanted to provide you with a
    quick heads up! Aside from that, excellent website!

  2. Stellar performance shown throughout entire engagement period when working together positively impacted overall mood significantly making this feel like one outstanding partnership based on trust built through rock-solid assurances provided upfront! Professional gutter cleaning

  3. Hi, Neat post. There’s an issue along with your web site in internet explorer,
    might check this? IE nonetheless is the marketplace chief and a big element of folks will
    pass over your wonderful writing due to this problem.

  4. The other day, while I was at work, my cousin stole my iPad and tested to see if
    it can survive a thirty foot drop, just so she can be
    a youtube sensation. My iPad is now destroyed and she has 83 views.
    I know this is completely off topic but I had to share it with someone!

    Also visit my site – 오피사이트