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 - підключає батьківський клас. Це дозволяє успадкувати усі властивості і методи від іншого класу.
Батьківський клас повинен бути оголошений першим.
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 - вказує що метод є статичним. Статичний метод це метод який можна визвати лише без створення екземпляра класу. Якщо визвати на екземплярі класу то виникне помилка.
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 - вказує на батьківський метод:
class A{
toText(){
return "test";
}
}
class B extends A{
text(){
return super.toText();
}
}
var ob = new B();
alert( ob.text() );
У 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 );