Skip to content

Instantly share code, notes, and snippets.

@fmal
Forked from mattdesl/disallow-new.js
Last active August 30, 2015 16:00
Show Gist options
  • Save fmal/e339a6ad98b1c8b539d4 to your computer and use it in GitHub Desktop.
Save fmal/e339a6ad98b1c8b539d4 to your computer and use it in GitHub Desktop.
avoiding new in classes
// Allows:
// funkyParser()
module.exports = function createFunkyParser(opt) {
return new FunkyParser(opt)
}
function FunkyParser(opt) {
// make params optional
opt = opt || {}
this.foo = opt.foo || 'default'
// handle other options...
...
}
// Allows:
// funkyParser()
// new funkyParser()
module.exports = FunkyParser
function FunkyParser (opt) {
// hide "new"
if (!(this instanceof FunkyParser))
return new FunkyParser(opt)
opt = opt || {}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment