>But really, this is just JS wearing some new clothes.
And that's not a bad thing.
If you want FP and encapsulation, you can write something like this (functionally equivalent to the OO version, unlike TFA's example)
move = ->
alert "#{@move_verb or "Mov"}ing..."
alert "#{@name or "It"} moved #{@distance or 1} meters"
snake =
name: "Sammy"
distance: 5
move_verb: "Slither"
horse =
name: "Tommy"
distance: 45
move_verb: "Gallop"
move.call snake
move.call horse