Методът constructor
е специален метод за създаване и инициализиране на обект , създаден в рамките класът (class
).
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Източникът на този интерактивен пример се съхранява в хранилище на GitHub. Ако искате да допринесете за проекта за интерактивни примери, моля клонирайте https://github.com/mdn/interactive-examples и ни изпратете заявка за изтегляне.
Синтаксис
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);
}
Спецификации
Specification | Status | Comment |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Constructor Method' in that specification. |
Standard | Initial definition. |
ECMAScript (ECMA-262) The definition of 'Constructor Method' in that specification. |
Living Standard |
Съвместимост с браузъра
BCD tables only load in the browser