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. whoah this weblog is fantastic i like studying your posts.
    Keep up the good work! You understand, lots of people are searching around for this information, you can aid them greatly.

  2. Heya! I know this is sort of off-topic but I had
    to ask. Does operating a well-established website such as yours take a lot
    of work? I’m completely new to blogging but I do write in my diary every day.
    I’d like to start a blog so I can easily share my experience and feelings online.
    Please let me know if you have any recommendations or tips for brand new aspiring
    bloggers. Thankyou!

  3. Для расчета цены просим вас прислать фотографии
    комнат, это поможет оценить объем работ, необходимое количество химии,
    сформировать бригаду клинеров.