Trevor Burnham's example.
class Enterprise
constructor: (@captain) ->
@name = @constructor.name
class Voyager
constructor: (@captain) ->
@name = @constructor.name
StarshipMaker = (captain) ->
switch captain
when "Kirk", "Picard", "Archer"
new Enterprise(captain)
when "Janeway"
new Voyager(captain)
else
throw new Error("Unknown starship captain!")
{ok} = require "assert"
ship = StarshipMaker "Kirk"
ok ship.name is "Enterprise"
ship = StarshipMaker "Janeway"
ok ship.name is "Voyager"