no-new

0.1.1 • Public • Published

no-new

npm version

Make the 'new' keyword optional for ES6 classes

no-new

Usage

npm install no-new

var nonew = require('no-new')

class Class {
  // ...
}

var Class2 = nonew(Class)

Class() // throws error
Class2() // creates an instance of Class

Rationale

With ES5 "constructor" functions, a common pattern is to make the new keyword optional by doing something like the following:

function Foo () {
  if (!(this instanceof Foo)) return new Foo()
  // do constructor stuff
}

Recently, ES6 introduced classes to replace constructor functions. However, if these classes are instantiated without new, an error is thrown: TypeError: Class constructor Foo cannot be invoked without 'new'. This module makes new optional, even for these ES6 classes.

Credit

Thank you to Sorella in ##javascript (Freenode) for the clean solution.

Package Sidebar

Install

npm i no-new

Weekly Downloads

0

Version

0.1.1

License

MIT

Last publish

Collaborators

  • mappum