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

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
Basic supportChrome Full support 49
Notes
Full support 49
Notes
Notes From Chrome 42 to 48 strict mode is required. Non-strict mode support can be enabled using the flag "Enable Experimental JavaScript".
Edge Full support 13Firefox Full support 45IE No support NoOpera Full support 36Safari Full support 9WebView Android ? Chrome Android Full support YesEdge Mobile Full support 13Firefox Android Full support 45Opera Android ? Safari iOS Full support 9Samsung Internet Android Full support Yesnodejs Full support 6.0.0
Full support 6.0.0
Full support 4.0.0
Disabled
Disabled From version 4.0.0: this feature is behind the --use_strict runtime flag.
Full support 5.0.0
Disabled
Disabled From version 5.0.0: this feature is behind the --harmony runtime flag.

Legend

Full support  
Full support
No support  
No support
Compatibility unknown  
Compatibility unknown
See implementation notes.
See implementation notes.
User must explicitly enable this feature.
User must explicitly enable this feature.

Vezi și următoarele:

Document Tags and Contributors

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