⊗jsOpIhPtM 37 of 60 menu

Beskyttede metoder i OOP i JavaScript

Private metoder arves ikke og er ikke synlige utenfor klassen. Noen ganger trengs det imidlertid metoder som arves, men ikke er synlige utenfor klassen. Slike metoder kalles beskyttede (protected). JavaScript støtter dessverre ikke slike metoder.

Derfor foreslår jeg å innføre en viss konvensjon som tillater å opprette slike metoder. La oss starte navnene på slike metoder med understrek. Faktisk bruker vi den gamle allment aksepterte konvensjonen om private metoder. Bare vi kaller slike metoder beskyttede for å indikere at de arves, men vi vil ikke bruke dem utenfor. Forresten, det er slik de brukes i henhold til den gamle konvensjonen.

Så la oss skrive en foreldreklasse med en beskyttet metode:

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

La oss bruke denne beskyttede metoden i en underklasse:

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

I følgende kode, gjør hjelpemetoden beskyttet:

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; } }
Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis