This translation is incomplete. Please help translate this article from English.

Metoda constructor este o metodă specială pentru creerea și inițializarea unui obiect creat într-o clasă.

Sintaxă

constructor([arguments]) { ... }

Descriere

Nu poate exista decât o singură metodă specială cu numele  constructor într-o clasă. Având mai mult de o apariție a unei metode constructor într-o clasă va arunca o eroare SyntaxError.

O metodă constructor poate folosi cuvântul cheie super pentru a apela constructorul clasei părinte. 

Dacă nu se specifică o metodă constructor, atunci un constructor implicit este folosit.

Exemple

Folosind metoda constructor

Acest cod este luat din 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.
    this.name = 'Square';
  }

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

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

Alt examplu

Aruncați o privire la acestă bucată de cod

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

Aici se schimbă prototipul clasei Square, dar constructorul clasei de bază Poligon este numit atunci când se creează o nouă instanță a unui pătrat.

Constructori impliciți

După cum sa menționat, dacă nu specificați o metodă constructor, este utilizat un constructor implicit. Pentru clasele de bază constructorul implicit este:

constructor() {}

Pentru clasele derivate, construcotrul implicit este:

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

Specificații

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Constructor Method' in that specification.
Standard definiție inițială.
ECMAScript Latest Draft (ECMA-262)
The definition of 'Constructor Method' in that specification.
Draft  

Compatibilități de Navigator

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support4911345 No369
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support ? Yes1345 ?9 Yes

1. From Chrome 42 to 48 strict mode is required. Non-strict mode support can be enabled using the flag "Enable Experimental JavaScript".

2. From version 4.0.0: this feature is behind the --use_strict runtime flag.

3. From version 5.0.0: this feature is behind the --harmony runtime flag.

Vezi și următoarele:

Document Tags and Contributors

Contributors to this page: vsambor
Last updated by: vsambor,