⊗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 များကို အသုံးပြုပါသည်။ ဒေတာများကို ပြုပြင်ခြင်းသည် ကိုယ်ရေးကိုယ်တာ မူဝါဒအတိုင်း ဖြစ်ပါသည်။
အားလုံးလက်ခံရန် ပြင်ဆင်ရန် ငြင်းပယ်ရန်