ISTM the author's "pure javascript" version of the horse/snake example is not solving the same problem as the CoffeeScript one.<p>In the CS code, the association between the object and it's type of motion (galloping/slithering) is made at construction time (via the implementation of "move" associated with the object), and in the "pure javascript" code it is made at the call site for "move".<p>This seems like such a fundamental difference that it becomes a little difficult to take the rest of the argument seriously.