⊗jsOpIhPtM 37 of 60 menu

วิธีการที่ได้รับการป้องกันใน OOP ใน JavaScript

เมธอดส่วนตัวไม่ถูกรับมรดกและไม่สามารถมองเห็น จากภายนอกคลาส อย่างไรก็ตาม บางครั้งก็ต้องการเมธอด ที่ถูกรับมรดก แต่ไม่สามารถมองเห็นจากภายนอก คลาส เมธอดดังกล่าวเรียกว่า วิธีการที่ได้รับการป้องกัน (protected) น่าเสียดายที่ JavaScript ไม่รองรับ เมธอดดังกล่าว

ดังนั้นผมจึงเสนอให้ใช้อนุสัญญาบางอย่าง ที่อนุญาตให้สร้างเมธอดดังกล่าวขึ้นมา เราจะเริ่มต้นชื่อของเมธอดดังกล่าว ด้วยขีดล่าง ในความเป็นจริง เราใช้อนุสัญญาเก่าที่เป็นที่ยอมรับโดยทั่วไป เกี่ยวกับเมธอดส่วนตัว เพียงแต่เราเรียกเมธอดดังกล่าวว่าวิธีการที่ได้รับการป้องกัน เพื่อแสดงว่าพวกมันถูกรับมรดก แต่เราจะไม่ใช้พวกมัน จากภายนอก อย่างไรก็ตาม นี่เป็นวิธีที่พวกมัน ถูกนำมาใช้ตามอนุสัญญาโบราณนั่นเอง

เอาล่ะ มาเขียนคลาสแม่ ด้วยเมธอดที่ได้รับการป้องกัน:

class User { setName(name) { this.name = name; } getName() { return this._capeFirst(this.name); } _capeFirst(str) { return str[0].toUpperCase() + str.slice(1); } }

มาใช้เมธอดที่ได้รับการป้องกันนี้ ในคลาสลูก:

class Student extends User { setSurn(surn) { this.surn = surn; } getSurn() { return this._capeFirst(this.surn); } }

ในโค้ดต่อไปนี้ ทำให้เมธอดตัวช่วย เป็นวิธีการที่ได้รับการป้องกัน:

class User { setName(name) { if (this.notEmpty(name)) { this.name = name; } } getName() { return this.name; } notEmpty(str) { return str.length > 0; } } class Employee extends User { setSurn(surn) { if (this.notEmpty(surn)) { this.surn = surn; } } getSurn() { return this.surn; } }
ไทย
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
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ