Объявление класса

class Comment {
text='igor';
age=25;
}

user1 = new Comment();
}

По факту при возові обїекта Comment викликається функція конструктора. Тому туди можна передавати аргументи у влстивості

class Comment {
constructor (text,vot) {
this.text = text;
this.votesQty = vot;
this.any = 'any_text';
}
upvote() {
this.votesQty += 1;
}
}

user1 = new Comment('igor',25);

Объявление екземпляра класса

const firstcomment = new Comment('First comment')

Визов метода класса в єкземпляре класса

firstcomment.upvote()

Проверка принадлежности єксемпляра класса к классу

firstcomment instanceof Comment
firstcomment instanceof Object)

Получение доступа к прототипу класса из єкземпляра класса

Comment.prototype.constructor

Обявление статического метода

єтот метод будет доступен как свойство класса Comment и НЕ наледуются всеми єкземплярами класса. т.е. он будет доступен как метод только самого класса

class Comment {
constructor (text) {
this.text = text;
this.votesQty = 0;
}
static mergeComment (first, second) {
return `${first} ${second}`;
}
}

Comment.mergeComment("asfsdf","sfdgdfg")

Расширение других классов

class numberArray extends Array {
sum(){
return this.reduce((el,acc)=>acc+-el,0);
}
}
const myArray = new numberArray(2,3,5)

Приватні властивості

Приватні властивості описувати зпочатку перед конструктором через знак # і звертатись до них також у середині класу.

class Comment {
#maxSpeed = 300;
constructor (text,vot) {
this.text = text;
this.votesQty = vot;
this.any = 'any_text';
}
ShowMaxSpeed() {
console.log(#maxSpeed);
}
}

user1 = new Comment('igor',25);
user1.ShowMaxSpeed();

Геттери та Сеттери