Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗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
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ