====== Объявление класса ======
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
====== Обявление статического властивості ======
Ця властивість буде доступна как свойство только классаи НЕ наледуются всеми єкземплярами класса. т.е. он будет доступен как свойство только самого класса
class Comment {
constructor (text) {
this.text = text;
this.votesQty = 0;
}
static pi = 3.1415;
}
fdf = Comment.pi;
====== Обявление статического метода ======
єтот метод будет доступен как свойство класса Comment и НЕ наледуются всеми єкземплярами класса. т.е. он будет доступен как метод только самого класса
class Comment {
constructor (text) {
this.text = text;
this.votesQty = 0;
}
static mergeComment (first, second) {
return `${first} ${second}`;
}
}
Comment.mergeComment("asfsdf","sfdgdfg")
====== Приватні властивості ======
Приватні властивості описувати зпочатку перед конструктором через знак **#** і звертатись до них також у середині класу.
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();
====== Геттери (get) та Сеттери (set) ======
В більшості вони потрібні тільки для приватних властивостей, але технічно можна робити і не для приватних властивостей
class Comment {
#age= 30;
constructor (text,vot) {
this.text = text;
this.votesQty = vot;
this.any = 'any_text';
}
set age(newValue){
this.#age = newValue;
}
get age(newValue){
return this.#age;
}
}
Comment.age = 10;
Console.log(Comment.age);
====== Успадкування класів extends ======
* **extends** - вказання що клас повинен наслідувати з іньшого класу
* **super()** - всередині класу що буде приймате наслідувати вказує що сопчатку треба виконати супер-контруктор. Конструктор батьківського класу
//--Батьківкий клас
class Animal {
constructor(name, age, pows){
this.name = name;
this.age = age;
this.paws = pows;
}
sleep(){
console.log('zzzz')
}
}
//--наслідумо у класс Dog властивості та методи (по факту методи не копіюються але система по ланцюжку шука у батьківських поки не знайде) з класу Animal
class Dog extends Animal {
constructor (name, age, pows){
super(name, age, pows);
this.typevoice = '';
}
satHello(){
console.log('PowPow');
}
}