The constructor method is a special method for creating and initializing an object created within a class.


constructor([arguments]) { ... }


There can be only one special method with the name "constructor" in a class. Having more than one occurrence of a constructor method in a class will throw a SyntaxError error.

A constructor can use the super keyword to call the constructor of a parent class.

If you do not specify a constructor method, a default constructor is used.


Using the constructor method

This code snippet is taken from the classes sample (live demo).

class Square extends Polygon {
  constructor(length) {
    // Here, it calls the parent class' constructor with lengths
    // provided for the Polygon's width and height
    super(length, length);
    // Note: In derived classes, super() must be called before you
    // can use 'this'. Leaving this out will cause a reference error. = 'Square';

  get area() {
    return this.height * this.width;

  set area(value) {
    this.area = value;

Another example

Take a look at this code snippet

class Polygon {
    constructor() { = "Polygon";

class Square extends Polygon {
    constructor() {

class Rectangle {}

Object.setPrototypeOf(Square.prototype, Rectangle.prototype);

console.log(Object.getPrototypeOf(Square.prototype) === Polygon.prototype); //false
console.log(Object.getPrototypeOf(Square.prototype) === Rectangle.prototype); //true

let newInstance = new Square();
console.log(; //Polygon

Here the prototype of Square class is changed but still the constructor of the previous base class Polygon is called when a new instance of a square is being created.

Default constructors

As stated, if you do not specify a constructor method a default constructor is used. For base classes the default constructor is:

constructor() {}

For derived classes, the default constructor is:

constructor(...args) {


Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Constructor Method' in that specification.
Standard Initial definition.
ECMAScript Latest Draft (ECMA-262)
The definition of 'Constructor Method' in that specification.

Browser compatibility

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Basic support 42.0 (Yes) 45 (45) ? ? ?
Default constructors ? ? 45 (45) ? ? ?
Feature Android Android Webview Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support No support 42.0 (Yes) 45.0 (45) ? ? ? 42.0
Default constructors ? ? ? 45.0 (45) ? ? ? ?

See also

Document Tags and Contributors

 Contributors to this page: joshuaCU, ishbilli, jameshkramer, ariyankhan, kdex, fscholz, rwaldron, jpmedley, llue
 Last updated by: joshuaCU,