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

JavaScript ရှိ OOP တွင် အမွေဆက်ခံခြင်း၌ Private Properties ၏ပြဿနာ

Private properties များသည် အမွေမဆက်ခံနိုင်ခြင်းသည် မမျှော်လင့်ထားသော ပြဿနာတစ်ရပ်ကို ဖြစ်ပေါ်စေနိုင်ပါသည်။ ဥပမာတစ်ခုဖြင့် ကြည့်ရှုကြပါစို့။ ကျွန်ုပ်တို့တွင် private property ပါရှိသော မိဘ class တစ်ခု ရှိသည်ဆိုပါစို့။

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

ဆက်ခံသော class တွင် အသက်တစ်နှစ်တိုးပေးမည့် method တစ်ခုပြုလုပ်ရန် ဆုံးဖြတ်ခဲ့သည်ဆိုပါစို့။ သို့ရာတွင်၊ မိဘ class ၏ private property ကို ပြုပြင်ရန် ကြိုးပမ်းခြင်းသည် error တစ်ခုကို ဖြစ်ပေါ်စေမည်။

class Student extends User { incAge() { this.#age++; // ချွတ်ယွင်းချက် } }

ဆက်ခံသော class ထဲတွင် private property #age ကို ကြေငြာပေးပါက error ပျောက်ကွယ်သွားပါမည်။

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

ဤနေရာတွင် ကျွန်ုပ်တို့ကို ထောင်ချောက်ဆင်ထားပါသည်။ အမှန်တကယ်တွင် ကျွန်ုပ်တို့သည် private property နှစ်ခုကို ဖန်တီးလိုက်ခြင်းဖြစ်သည် - တစ်ခုသည် မိဘ class ထဲတွင်၊ နောက်တစ်ခုသည် ဆက်ခံသော class ထဲတွင်။ ၎င်းတို့သည် လုံးဝသီးခြား အလုပ်လုပ်ကြပါသည်။ ဆိုလိုသည်မှာ၊ မိဘ class ၏ method များသည် ၎င်း၏ကိုယ်ပိုင် property ကို ပြောင်းလဲပြီး၊ ဆက်ခံသော class ၏ method များသည် သူတို့၏ ကိုယ်ပိုင်ဟာများကို ပြောင်းလဲပါလိမ့်မည်။

ဤပြဿနာအတွက် အဖြေရှိပါသည်။ မိဘ class ၏ private properties များကို ထို မိဘ class ၏ method များမှတဆင့် ကိုင်တွယ်ဆောင်ရွက်ရန် လိုအပ်ပါသည်။ ကျွန်ုပ်တို့၏ code ကို ဤနည်းအတိုင်း ပြန်ရေးကြည့်ကြပါစို့။

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

ရိုးရှင်းအောင် ပြုလုပ်နိုင်ပါသည်။

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

အောက်ပါ code တွင် ဆက်ခံသော class ထဲ၌ မိဘ class ၏ method ကို အစားထိုး သတ်မှတ်ထားပါသည်။ ဤ code အတွင်းရှိ ပြဿနာများကို ပြုပြင်ပေးပါ။

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МакедонскиMelayuNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
ဝက်ဘ်ဆိုက် လုပ်ဆောင်ခြင်း၊ ဆန်းစစ်လေ့လာခြင်းနှင့် ပုဂ္ဂလိကပြုပြင်ခြင်းအတွက် ကျွန်ုပ်တို့သည် cookie များကို အသုံးပြုပါသည်။ ဒေတာများကို ပြုပြင်ခြင်းသည် ကိုယ်ရေးကိုယ်တာ မူဝါဒအတိုင်း ဖြစ်ပါသည်။
အားလုံးလက်ခံရန် ပြင်ဆင်ရန် ငြင်းပယ်ရန်