Introduksjon til Encapsulation i JavaScript

JavaScript er et solid objektorientert skriptspråk, som er i stand til å bygge komplekse applikasjoner både på klienten og serveren. Jo høyere kompleksitet i implementeringen er, desto bedre vedlikeholdbar og fleksibel kode er nødvendig for å takle situasjonen. Innkapsling, et av prinsippene for objektorientert programmering er nøkkelen til å oppnå slike mål.

Per definisjon Innkapsling i JavaScript er en prosess for å binde dataene til funksjonene som virker på dataene. Innkapsling lar oss kontrollere og validere dataene. I JavaScript ligner variabler data.

Innkapsling betyr informasjon som skjuler seg, dvs. ideen om at de indre enhetene til et objekt ikke skal være direkte blott som offentlige enheter. Dette vil bidra til å begrense uautorisert bruk av variablene. I stedet, hvis innringere ønsker å oppnå et definert resultat, bør de bruke den offentlige metoden eller offentlige enheter i objektet for å få tilgang til de private variablene til objektet.

Working of Encapsulation in JavaScript

La oss ta et enkelt problem der et "ansatt" -objekt inneholder to attributter "navn" -attributt.

var employee = (
name : "Aditya Chaturvedi",
);
alert(employee.name); // Aditya Chaturvedi
employee.name = "Rahul Khanna";
alert(employee.name); // Rahul Khanna

Alt ser bra ut i eksemplet ovenfor. Vi opprettet objektet, trykte attributtverdien og modifiserte det. Men problemet ser ut til å oppstå når en eller annen bruker prøver å sette en heltallverdi til navneattributtet.

employee.name = "Amit Trivedi";
alert(employee.name); // Amit Trivedi

For JavaScript er dette fullstendig lovlig, da i JavaScript kan en variabel godta enhver type gitt til det. For å rette opp i dette, må vi stille inn et område med gyldige tegn som kan settes til attributtnavnet til objektet. Disse valideringene kan ikke fungere hvis den som ringer kan få tilgang til og endre verdien av disse dataene. Den enkle løsningen for dette ville være

var employee = (
name : "Aditya Chaturvedi",
setName : function (value) (
var exp = new RegExp(/\d+/);
if( exp.test(value) ) (
alert("Invalid Name");
)
else (
this.name = value;
)
),
"getName" : function() (
return this.name;
)
);
alert( employee.getName() ); // Aditya Chaturvedi
employee.setName( "Rahul Khanna" );
alert( employee.getName() ); // Rahul Khanna
employee.setName( 42 ); // Invalid Name
alert( employee.getName() ); // Rahul Khanna

Eksemplet ovenfor bruker valideringen, men har fortsatt noen feil som om den som ringer får tilgang til navnet direkte, han fortsatt kan endre det.

employee.setName( 42 ); // Invalid Name; Here name won't be changed.
employee.name = 42; // No validation happens and the name is changed
alert( employee.getName() ); // 42 is printed.

Endemålet her over er at variabelnavnet ikke skal være tilgjengelig globalt med objektet "ansatt". Innkapsling hjelper det. Dette kan løses ved begrepene Function Scope and Closures.

1. Funksjonsomfang

Enhver variabel som er skrevet inne i kodeblokken for funksjonene forblir skjult utenfra.

function fnScope()
(
var fnVar = "Hi!";
alert( fnVar ) // "Hi!";
)
alert( fnVar ) // error; fnVar is not accessible outside the function.

Derfor, hvis vi flytter variabelen "navn" i funksjonen "setName", vil ikke innringerne ha tilgang til den direkte. Men dette er ikke lett å direkte legge variabelen "navn" inne i funksjonen "setName" ettersom variabelen i en funksjonsblokk ikke kan brukes utenfor dens omfang, og navnet vil derfor ikke være tilgjengelig for "getName" -metoden. For denne lukkingen vil hjelpe.

2. Lukkinger

Når to funksjoner er samlet sammen med referanser til deres omgivende tilstand eller det leksikale miljøet er kjent som en nedleggelse. Med enkle ord gir lukking tilgang til en lokal variabel av en funksjon som skal brukes av en annen funksjon i en overordnet funksjon. Her har vi et variabelt navn som gjemmer seg inne i funksjonssettetName fra omverdenen. Men det indre objektet (myObj), får tilgang til det:

var employee = function () (
var name = "Aditya Chaturvedi";
var exp = new RegExp(/\d+/);
var myObj = (
setName : function (value) (
if( exp.test(value) ) (
alert("invalid name");
)
else (
name = value; // The object has access to "name"
)
),
getName : function () (
return name; // The object has access to "name"
)
); // End of the Object
);
employee.getName(); // doesn't work!

Nå har vi brukt begrepet stenging, det indre objektet myObj kan nås av begge funksjonene. Men likevel er det en feil å få tilgang til det indre objektet. Ovenfor har vi sett medarbeider.getnavn kan ikke brukes, og verken medarbeider.myObj.getnavn kan brukes, siden myObj også er privat for funksjonen og private variabler ikke kan nås utenfor som dette. Derfor må vi returnere det indre objektet når den anonyme funksjonen kalles og tilordne den til en ekstern variabel.

var employee = function () (
var name = "Aditya Chaturvedi";
var exp = new RegExp(/\d+/);
return (
setName : function (value) (
if( exp.test(value) ) (
alert("Invalid Name");
)
else (
name = value;
)
),
getName : function () (
return name;
)
); // end of the return
)(); // Note this '()' means we're calling the function
// and assigning the returned value to the variable employee
alert(employee.getName()); // Aditya Chaturvedi
employee.setName( "Rahul Khanna" );
alert(employee.getName()); // Rahul Khanna
employee.setName( 42 ); // Invalid Name; the name does'nt changes.
employee.name = 42; // Doesn't affect the private fullName variable.
alert(employee.getName()); // Rahul Khanna is printed again.

Fordeler med innkapsling i JavaScript

Den største fordelen ved å bruke innkapsling i JavaScript er å gi sikkerheten til dataene. Andre fordeler med innkapsling inkluderer:

  • Innkapsling beskytter et objekt mot ulovlig tilgang.
  • Innkapsling hjelper deg med å oppnå et nivå uten å avsløre dens komplekse detaljer.
  • Dette vil redusere menneskelige feil.
  • Gjør applikasjonen mer fleksibel og håndterbar.
  • Forenkler applikasjonen.

Konklusjon

Innkapsling er verktøyet i JavaScript som kan brukes til å gjøre den komplekse operasjonen enkel og håndterbar med å gjøre den generelle applikasjonen sikker og enkel å jobbe.

Anbefalte artikler

Dette er en guide til Innkapsling i JavaScript. Her diskuterer vi arbeidet med innkapsling i javascript sammen med konsepter og fordeler. Du kan også se på følgende artikler for å lære mer-

  1. Funksjoner av JavaScript (kommentarer)
  2. Arrays i JavaScript - Typer og metoder
  3. JavaScript-verktøy
  4. For loop i JavaScript (arbeidsflyt)
  5. Variabler i JavaScript
  6. Typer og håndteringsfeil i JavaScript
  7. Regex-funksjoner i Python (eksempel)
  8. Eksempler på kommentarer i PHP