Skip to content

Instantly share code, notes, and snippets.

@mattdesl
Last active February 22, 2023 10:48
Show Gist options
  • Save mattdesl/d074d956f07821f7d3bb to your computer and use it in GitHub Desktop.
Save mattdesl/d074d956f07821f7d3bb 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