constructor

Методът constructor е специален метод за създаване и инициализиране на обект , създаден в рамките класът (class).

Синтаксис

constructor([arguments]) { ... }

Описание

Може да има само един специален метод с име "constructor" в даден клас (class). Ако има повече от един метод с името constructor в класът си , ще се появи грешка   SyntaxError.

Конструктора (constructor) може да използва ключовата дума super за да извика конструктора на родителския клас.

Ако не посочите метода конструктор, ще се използва конструктор по подразбиране

Примери

Използване на метода  constructor

Този примерен код е взет от  classes sample (демо на живо).

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.
    this.name = 'Square';
  }

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

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

Друг пример

Разгледайте този код :

class Polygon {
    constructor() {
        this.name = "Polygon";
    }
}

class Square extends Polygon {
    constructor() {
        super();
    }
}

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(newInstance.name); //Polygon

Тук прототипа на класът Square се променя, но все пак конструктора на предишния базов клас Polygon се извиква, когато се създава нова инстанция(екземлпяр) от класът Square. Това е така , защото в класът Squre използваме ключовата дума super, извиквайки конструктора на родителският клас Polygon .

Конструктор по подразбиране

Както е посочено,ако не посочите метод конструктор, ще се използва  конструктор по подразбиране . За базовите класове , конструктора по подразбиране е :

constructor() {}

За производни класове, конструктора по подразбиране е :

constructor(...args) {
  super(...args);
}

Спецификации

Съвместимост с браузъра

BCD tables only load in the browser

Въжте също