class

class - опис класу у JavaScript.

Синтаксис:

class назва { constructor(){ } }

Параметри:

назва - назва класу.

constructor - функція яка виконується коли створюється екземпляр класу при виклику new назва().

Опис:

class - описує клас для створення екземпляра класу за допомогою new.

Клас у програмуванні це опис методів і властивостей об'єкта.

Класи у JavaScript появилися у ECMAScript 6 (ES6), і являються по факту такими ж функціями конструкторами (об'єктами). У JavaScript класи забезпечують набагато більш простий і зрозумілий синтаксис для створення об'єктів і мати справу зі спадщиною.

Приклад створення класу:

class MyClass{ constructor (text){ this.text = text; } } var ob=new MyClass("test"); alert(ob.text); alert(typeof ob); // "object"

Альтернативний спосіб створення об'єкту за допомогою функції-конструктор:

function MyClass(text){ this.text = text; } var ob=new MyClass("test"); alert( ob.text ); alert(typeof ob); // "object"

extends

extends - підключає батьківський клас. Це дозволяє успадкувати усі властивості і методи від іншого класу.

Батьківський клас повинен бути оголошений першим.

class A{ constructor(text){ this.text=text; } } class B extends A{ toText(){ return this.text; } } var ob=new B("test"); alert( ob.toText() ); class myArray extends Array{ toJSON(){ return JSON.stringify( Array.from(this) ); } } var mas = new myArray(1, 2, 3, "чотири", [2,2]); alert( mas.toJSON() );

static

static - вказує що метод є статичним. Статичний метод це метод який можна визвати лише без створення екземпляра класу. Якщо визвати на екземплярі класу то виникне помилка.

class MyClass{ constructor(text){ this.text=text; } static toText(){ return "тест"; } } var ob=new MyClass("test"); alert( MyClass.toText() ); alert( ob.toText() ); //TypeError toText is no a function

super

super - вказує на батьківський метод:

class A{ toText(){ return "test"; } } class B extends A{ text(){ return super.toText(); } } var ob = new B(); alert( ob.text() );

get і set

У JavaScript в описі класу можна звертатися до властивості об'єкту за допомогою гетера і сетера.

Для того щоб можна було задати властивість об'єкту за допомогою сетера вказується set перед функцією, а щоб отримати за допомогою гетера вказується get.

class myClass{ constructor(s){ this.name=s; } //сетер set text(s){ this.name=s; } //гетер get text(){ return this.name; } } var ob = new myClass("js"); alert( ob.text ); //"js" ob.text="JavaScript";

Конструктор класу та методи класу виконуються у суворому режимі "use strict", навіть якщо суворий режим не включений.

Приклад:

class myClass{ constructor(s){ this.name=s; this.date= new Date(); } } var ob= new myClass("Київ"); alert( ob.name ); class Person{ constructor(name, dn){ this.name=name; this.dn=new Date(dn); } // визначаємо вік get vik(){ var d = new Date(); var v = d.getFullYear()-this.dn.getFullYear(); if(d.getMonth() - this.dn.getMonth()<0)v=v-1; else if(d.getMonth() - this.dn.getMonth()==0){ if(d.getDay()-this.dn.getDay()<0) v=v-1;} return v; } toString(){ return this.name+" "+this.dn; } } var p = new Person("Марія", "1996-01-26"); p.tel="+30961234567" alert( p.vik );