With `O.prototype = { ... }`, the `constructor` property doesn't seem to be set on the new object. This doesn't affect anything functionally, so not a big deal. Are you removing `constructor` as a way of cleaning up the object properties?

Or is this more of a coding style thing? The only nit I have is that I have to add a level of indentation to everything, but otherwise it seems like a reasonable enough change, especially if we start adding more functions to getopt.

I see maybe one or two more functions at most; everything else can be taken care of with separate utility functions.