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. It is truly a great and useful piece of info.
    I’m satisfied that you shared this helpful information with us.
    Please keep us up to date like this. Thank you for sharing.

  2. great points altogether, you simply received a emblem new reader.
    What would you recommend in regards to your publish that
    you simply made a few days ago? Any sure?

  3. Please let me know if you’re looking for a
    writer for your blog. You have some really good articles
    and I believe I would be a good asset. If you ever want to take some of the load off,
    I’d love to write some content for your blog in exchange
    for a link back to mine. Please shoot me an e-mail if interested.
    Many thanks!

  4. Please let me know if you’re looking for a article author for your site.
    You have some really great posts and I think I
    would be a good asset. If you ever want to take some of the load off,
    I’d love to write some content for your blog in exchange for a
    link back to mine. Please send me an e-mail if interested.
    Cheers!

  5. Wow, amazing weblog format! How lengthy have you been blogging for?
    you made blogging look easy. The full glance of your web site is fantastic,
    let alone the content!