Introduktion til indkapsling i JavaScript

JavaScript er et robust objektorienteret scriptingsprog, der er i stand til at bygge komplekse applikationer på både klienten og serveren. Jo større kompleksitet der er i implementeringen, desto bedre er vedligeholdelsesmæssig og fleksibel kode nødvendig for at tackle situationen. Indkapsling, et af principperne for objektorienteret programmering er nøglen til at nå sådanne mål.

Per definition er indkapsling i JavaScript en proces til binding af dataene med de funktioner, der virker på dataene. Indkapsling giver os mulighed for at kontrollere og validere dataene. I JavaScript ligner variabler data.

Indkapsling betyder information, der skjuler sig, dvs. ideen om, at de indre enheder af et objekt ikke skal være direkte blotte som offentlige enheder. Dette vil hjælpe med at begrænse den uautoriserede brug af variablerne. I stedet for, hvis opkalderne ønsker at opnå et defineret resultat, skal de bruge den offentlige metode eller offentlige enheder inde i objektet for at få adgang til objektets private variabler.

Arbejde med indkapsling i JavaScript

Lad os tage et simpelt problem, hvor et "medarbejder" -objekt indeholder to attributter "navn" -attribut.

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

Alt ser fint ud i ovenstående eksempel. Vi oprettede objektet, udskrev dets attributværdi og ændrede det. Men problemet ser ud til at opstå, når en bruger forsøger at indstille en heltalværdi til navneattributten.

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

For så vidt angår JavaScript er dette fuldstændigt lovligt, da i JavaScript kan en variabel acceptere enhver type, der er givet den. For at rette op på dette er vi nødt til at indstille området med gyldige tegn, der kan indstilles til objektets attributnavn. Disse valideringer kan ikke fungere, hvis den, der ringer, kan få adgang til og ændre værdien af ​​disse data. Den enkle løsning til 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

Ovenstående eksempel anvender valideringen, men har stadig nogle fejl, som om den, der ringer, får direkte adgang til navnet, han stadig kan ændre 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.

Det endelige mål herover er, at variabelnavnet ikke skal være tilgængeligt globalt med objektet "medarbejder". Indkapsling hjælper det. Dette kan løses ved hjælp af koncepterne Funktionsomfang og lukninger.

1. Funktionsomfang

Enhver variabel, der er skrevet inde i kodeblokken for funktionerne forbliver skjult udefra.

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

Derfor, hvis vi flytter variablen "navn" inden for funktionen "sætnavn", vil opkalderne ikke kunne få adgang til den direkte. Men dette er ikke nemt at direkte sætte variablen “navn” i funktionen “sætnavn”, da variablen inde i en funktionsblok ikke kan bruges uden for dens anvendelsesområde, og navn ville derfor ikke være tilgængeligt for “getName” -metoden. For denne lukning vil hjælpe.

2. Lukninger

Når to funktioner er samlet sammen med henvisninger til deres omgivende tilstand eller det leksikale miljø er kendt som en lukning. Med enkle ord giver lukning adgang til en lokal variabel af en funktion, der skal bruges af en anden funktion i en overordnet funktion. Her har vi et variabelt navn, som gemmer sig inde i funktionssætnavnet fra omverdenen. Men det indre objekt (myObj) kan få adgang 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!

Nu har vi brugt konceptet lukning, det indre objekt myObj kan fås ved hjælp af begge funktioner. Men stadig er der en fejl ved adgang til det indre objekt. Ovenfor har vi set medarbejder.getnavn kan ikke bruges, hverken medarbejder.myObj.getnavn kan bruges, da myObj også er privat for funktionen, og private variabler kan ikke fås adgang til udenfor som denne. Derfor er vi nødt til at returnere det indre objekt, hver gang den anonyme funktion kaldes og tildele 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.

Fordele ved indkapsling i JavaScript

Den største fordel ved at bruge indkapsling i JavaScript er at give dataene sikkerhed. Andre fordele ved indkapsling inkluderer:

  • Indkapsling beskytter et objekt mod ulovlig adgang.
  • Indkapsling hjælper med at nå et niveau uden at afsløre dets komplekse detaljer.
  • Dette vil mindske menneskelige fejl.
  • Gør applikationen mere fleksibel og håndterbar.
  • Forenkler applikationen.

Konklusion

Indkapsling er værktøjet i JavaScript, der kan bruges til at gøre den komplekse betjening let og håndterbar med at gøre det samlede program sikkert og let at arbejde.

Anbefalede artikler

Dette er en guide til Indkapsling i JavaScript. Her diskuterer vi arbejdet med indkapsling i javascript sammen med koncepter og fordele. Du kan også se på de følgende artikler for at lære mere-

  1. Funktioner af JavaScript (kommentarer)
  2. Arrays i JavaScript - Typer og metoder
  3. JavaScript-værktøjer
  4. Til loop i JavaScript (Workflow)
  5. Variabler i JavaScript
  6. Typer og håndteringsfejl i JavaScript
  7. Regex-funktioner i Python (eksempel)
  8. Eksempler på kommentarer i PHP

Kategori: