Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jsOpIhPPP 36 of 60 menu
◀ ▶

JavaScriptтеги ООПде мурас коюу убагындагы жекече касиеттердин көйгөйү

Жекече касиеттердин мурасталбашы күтүлбөгөн көйгөйгө алып келиши мүмкүн. Келгиле, мисал менен карап көрөлү. Бизде төмөнкүдөй жекече касиети бар ата-эне класс болсун:

class User { #age; setAge(age) { this.#age = age; } getAge() { return this.#age; } }

Эне классында биз жашты бирдикке көбөйтүүчү метод жасайлы деп чечилдик деп коёлу. Бирок, ата-эненин жекече касиетин өзгөртүү аракети катага алып келет:

class Student extends User { incAge() { this.#age++; // ката } }

Эне классында жекече касиет #age жарыяланса, ката жоголот:

class Student extends User { #age; incAge() { this.#age++; } }

Мына ушул жерде бизди тузак күтүп турат! Чынында эле биз эки жекече касиетти түздүк: бири ата-энэде, бири энэде. Жана алар толугу менен өз алдынча иштейт. Бул ата-эненин методдору өз касиетин өзгөртөт, ал эми энэнин методдору өзүнүкүн өзгөртөт дегенди билдирет.

Бул көйгөйдүн чынында эле чечими бар. Жөн гана ата-эненин жекече касиеттери менен ошол ата-эненин методдору аркылуу иштөө керек. Келгиле, биздин кодду ушуга ылайык кайра жазалы:

class Student extends User { incAge() { let age = this.getAge(); age++; this.setAge(age); } }

Жөнөкөйлөтсө болот:

class Student extends User { incAge() { this.setAge(++this.getAge()); } }

Төмөнкү коддо эне класста ата-эненин методу кайра аныкталат. Бул коддогу көйгөйлөрдү оңдогула:

class User { #name; setName(name) { this.#name = name; } getName() { return this.#name; } } class Employee extends User { setName(name) { if (name.length > 0) { this.#name = name; } } }
← →
↑
Кыргызча▼
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어LietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Биз сайттин иштөөсү, аналитика жана персонализация үчүн cookie файлдарын колдонобуз. Маалыматтарды иштетүү Маалыматты коргоо саясаты боюнча жүргүзүлөт.
баарын кабыл алуу ыңгайлаштыруу четке кагуу