Показать страницуИстория страницыСсылки сюдаODT преобразованиеНаверх Эта страница только для чтения. Вы можете посмотреть её исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. ====== Объявление класса ====== <code> class Comment { text='igor'; age=25; } </code> <code> user1 = new Comment(); } </code> По факту при возові обїекта **Comment** викликається функція конструктора. Тому туди можна передавати аргументи у влстивості <code> class Comment { constructor (text,vot) { this.text = text; this.votesQty = vot; this.any = 'any_text'; } upvote() { this.votesQty += 1; } } </code> <code> user1 = new Comment('igor',25); </code> ====== Объявление екземпляра класса ====== <code> const firstcomment = new Comment('First comment') </code> ====== Визов метода класса в єкземпляре класса ====== <code> firstcomment.upvote() </code> ====== Проверка принадлежности єксемпляра класса к классу ====== <code> firstcomment instanceof Comment firstcomment instanceof Object) </code> ====== Получение доступа к прототипу класса из єкземпляра класса ====== <code> Comment.prototype.constructor </code> ====== Обявление статического властивості ====== Ця властивість буде доступна как свойство только классаи НЕ наледуются всеми єкземплярами класса. т.е. он будет доступен как свойство только самого класса <code> class Comment { constructor (text) { this.text = text; this.votesQty = 0; } static pi = 3.1415; } </code> <code> fdf = Comment.pi; </code> ====== Обявление статического метода ====== єтот метод будет доступен как свойство класса Comment и НЕ наледуются всеми єкземплярами класса. т.е. он будет доступен как метод только самого класса <code> class Comment { constructor (text) { this.text = text; this.votesQty = 0; } static mergeComment (first, second) { return `${first} ${second}`; } } </code> <code> Comment.mergeComment("asfsdf","sfdgdfg") </code> ====== Приватні властивості ====== Приватні властивості описувати зпочатку перед конструктором через знак **#** і звертатись до них також у середині класу. <code> class Comment { #maxSpeed = 300; constructor (text,vot) { this.text = text; this.votesQty = vot; this.any = 'any_text'; } ShowMaxSpeed() { console.log(#maxSpeed); } } </code> <code> user1 = new Comment('igor',25); user1.ShowMaxSpeed(); </code> ====== Геттери (get) та Сеттери (set) ====== В більшості вони потрібні тільки для приватних властивостей, але технічно можна робити і не для приватних властивостей <code> 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; } } </code> <code> Comment.age = 10; Console.log(Comment.age); </code> ====== Успадкування класів extends ====== * **extends** - вказання що клас повинен наслідувати з іньшого класу * **super()** - всередині класу що буде приймате наслідувати вказує що сопчатку треба виконати супер-контруктор. Конструктор батьківського класу <code> //--Батьківкий клас 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'); } } </code> /sites/data/pages/objavlenie_klassa.txt Последнее изменение: 2023/12/14 20:06 — tro