Innkapsling i JavaScript | Forklart

Innkapsling i JavaScript | Forklart
JavaScript er et kraftig objektorientert skriptspråk som kan brukes til å utvikle komplekse applikasjoner. Med en økning i kompleksiteten i implementeringen, blir behovet for å opprettholde koden maksimert. “Innkapsling”Er et av de prisverdige prinsippene for Objektorientert programmering(Oop) som hjelper i denne forbindelse.

Ved hjelp av innkapsling kan du enkelt binde de data eller en enkelt enhet til metodene som utfører noen operasjoner på den. Det tillater deg også å validere og kontrollere dataflyten i en JavaScript -applikasjon.

Denne oppskrivningen vil forklare innkapsling i JavaScript ved hjelp av passende eksempler. Så la oss starte!

Innkapsling i JavaScript

Innkapsling I JavaScript er en metodikk brukt til skjule informasjon. Det er basert på konseptet at objektegenskaper ikke skal utsettes offentlig for omverdenen. Implementering av innkapsling i JavaScript forhindrer tilgang til variablene ved å legge til offentlige enheter i et objekt, som innringerne kan bruke for å oppnå spesifikke resultater.

Eksempel: Implementering av innkapsling i JavaScript

Først av alt vil vi lage et JavaScript -objekt som heter “student" har en "Navn”Eiendom:

var student =
Navn: "Alexander",
;

I neste trinn vil vi skrive ut den opprinnelige verdien av "Navn”Eiendom:

konsoll.Logg ("Studentnavn er:"+ student.Navn);

Deretter vil vi endre "student.Navn”Eiendomsverdi og bruker igjen“konsoll.Logg()”Metode for å vise den i konsollen:

student.name = "max";
konsoll.Logg ("Studentnavn er:"+ student.Navn);
student.name = "Paul";
konsoll.Logg ("Studentnavn er:"+ student.Navn);

Produksjon

Som du ser, fungerer alt perfekt i henhold til den ekstra logikken. Imidlertid vil et problem oppstå når en bruker legger inn en heltallverdi for "student.Navn”Eiendom.

Eksempel: Validering av data med innkapslingsmetoder i JavaScript

En JavaScript -variabel kan inneholde en verdi av hvilken som helst datatype, så for å løse det nevnte problemet, må vi begrense utvalget av juridiske karakterer for "Navn" Eiendomsverdi. For dette formålet vil vi bruke en Regex uttrykk/\ d+/”Det vil holde en sjekk på”En eller flere forekomster av sifferetegnene (0-9)“. Dette regex -uttrykket vil bli lagt til i en ny settermetode, "setname”Som utfører ytterligere testing:

var student =
Navn: "Alexander",
setName: funksjon (verdi)
var uttrykk = ny regexp (/\ d+/);
hvis (uttrykk.test (verdi))
konsoll.Log ("Ugyldig navn er lagt inn");

annet
dette.navn = verdi;

Deretter vil vi legge til en getter -metode “getName”For å hente“student.Navn" Eiendomsverdi:

getName: funksjon ()
Returner dette.Navn;

;
konsoll.Logg (student.getName ());
student.setName ("Max");
konsoll.Logg (student.getName ());
student.setName (34);
konsoll.Logg (student.getName ());

Nå, hvis uttalelsen “uttrykk.test (verdi)”Evaluerer å være“ekte,”Da vises en melding i konsollvinduet om at"Ugyldig navn er lagt inn”, Ellers“verdi”Bestått som et argument vil bli tildelt“Navn”Eiendom:

Vi har utført validering ved hjelp av et regex -uttrykk i settermetoden, men programmet vårt er ikke fullt innkapslet. Det er fordi “Navn”Eiendom er erklært globalt, som tillater den som ringer å få tilgang til og endre verdien:

student.navn = 34;
konsoll.Logg (student.getName ());

Den ovennevnte utgangen viser at når vi direkte har fått tilgang til "Navn”Eiendom til“student”Objekt, validering skjer ikke, og“34”Settes som eiendomsverdien. Denne handlingen beviser at hvis et objekts egenskap er tilgjengelig globalt, kan den lett nås, noe som risikerer sikkerheten til dataene.

Innkapsling i JavaScript ved bruk av funksjonsomfang

I stedet for å avsløre objektets egenskaper; Vi må skjule det utenfra. For å gjøre det, kan du bruke “var”Søkeord for å definere en privat eiendom og legge den i omfanget av en funksjon.

Eksempel: Innkapsling i JavaScript ved bruk av funksjonsomfang

I de neste "newFunc () ” Definisjon, “x”Er en privat variabel som kan nås i funksjonens kropp:

funksjon newFunc ()

var x = "linuxhint.com ";
konsoll.logg (x);

konsoll.logg (x);

Utførelse av den oppgitte koden viser en feil fordi "x”Er definert i“newfunc ()”Og vi får tilgang til det når det gjelder globalt omfang:

Tilsvarende å legge til “Navn”Som en privat variabel innen“setter”Metoden vil begrense sin direkte tilgang. I dette scenariet er "Navn”Variabel kan ikke brukes utenfor“setter”Metodeomfang, som betyr at“getter”Metoden har ikke tilgang til den også også.

Ved hjelp av "Stenginger”Er den enkleste og mest elegante måten å implementere innkapsling i JavaScript.

Innkapsling i JavaScript ved hjelp av stenginger

Inne i en overordnet funksjon, “Stenginger”La en funksjon bruke en annen funksjons lokale variabel.

For eksempel har vi en privat variabel "Navn“, Som kan nås ved begge metodene”getName”Og“setname”Innenfor funksjonsomfanget. Som et resultat blir den anonyme funksjonen påberopt, den må returnere det indre objektet og tilordne det til en utvendig variabel.

Eksempel: Innkapsling i JavaScript ved hjelp av stenginger

I dette eksemplet, når vi påkaller “setName ()”Og“getName ()”Funksjoner, denne handlingen genererer et nytt innkallingsomfang. Omfanget blir deretter bevart ved å returnere en peker til "student”Objekt:

var student = funksjon ()
var name = "Alexander";
var uttrykk = ny regexp (/\ d+/);
komme tilbake
setName: funksjon (verdi)
hvis (uttrykk.test (verdi))
konsoll.Log ("Ugyldig navn er lagt inn");

annet
navn = verdi;

,
getName: funksjon ()
Returnavn;

;
();

Den gitte funksjonen slutter med "()”Indikerer at vi påkaller funksjonen og tildeler den returnerte verdien til“student”Variabel:

konsoll.Logg (student.getName ());
student.setName ("Max");
konsoll.Logg (student.getName ());
student.setName (76);
student.navn = 76;
konsoll.Logg (student.getName ());

I dette tilfellet implementeres innkapsling fullt ut ved bruk av Stenginger, Og innringerne har ikke tilgang til den private variabelen direkte:

Det handlet om den grunnleggende informasjonen relatert til Innkapsling i JavaScript; Du kan utforske det ytterligere i henhold til våre krav.

Konklusjon

Ved hjelp av Funksjons omfang og Stenginger, Innkapsling i JavaScript kan enkelt implementeres. Ved hjelp av innkapsling kan du binde dataene eller en enkelt enhet til metodene som utfører noen operasjoner på dem. Det tillater deg også å validere og kontrollere dataflyten i en JavaScript -applikasjon. Denne oppskrivningen forklarte innkapsling i JavaScript sammen med passende eksempler.