Introduktion till Encapsulation i JavaScript

JavaScript är ett robust objektorienterat skriptspråk, som kan bygga komplexa applikationer på både klienten och servern. Ju högre komplexitet i genomförandet, desto bättre underhållsbar och flexibel kod behövs för att ta itu med situationen. Inkapsling, en av principerna för objektorienterad programmering är nyckeln till att uppnå sådana mål.

Per definition är kapsling i JavaScript en process för att binda data med de funktioner som verkar på uppgifterna. Inkapsling tillåter oss att kontrollera och validera data. I JavaScript liknar variabler data.

Inkapsling innebär information som döljer, dvs idén att ett objekts interna enheter inte ska vara direkt kala som offentliga enheter. Detta hjälper till att begränsa obehörig användning av variablerna. Istället, om de som ringer vill uppnå ett definierat resultat bör de använda den offentliga metoden eller offentliga enheter i objektet för att få åtkomst till objektets privata variabler.

Arbeta med inkapsling i JavaScript

Låt oss ta ett enkelt problem där ett "anställd" -objekt innehåller två attribut "namn" -attribut.

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

Allt ser bra ut i exemplet ovan. Vi skapade objektet, skrev ut attributvärdet och modifierade det. Men problemet verkar uppstå när någon användare försöker ställa in ett heltal för namnattributet.

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

När det gäller JavaScript är detta helt lagligt eftersom i JavaScript kan en variabel acceptera vilken typ som helst som den ges. För att korrigera detta måste vi ställa in intervallet med giltiga tecken som kan ställas in på attributets namn. Dessa valideringar kan inte fungera om den som ringer kan komma åt och ändra värdet på dessa data. Den enkla lösningen för detta skulle vara

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

Exemplet ovan tillämpar valideringen men har fortfarande vissa fel som om den som ringer får åtkomst till namnet direkt, han fortfarande kan ändra 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.

Slutmålet här är att variabelns namn inte ska vara tillgängligt globalt med objektet "anställd". Inkapsling hjälper det. Detta kan lösas med begreppen Function Scope and Closures.

1. Funktionsomfång

Alla variabler som är skrivna i kodblocket för funktionerna förblir dolda från utsidan.

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

Därför om vi flyttar variabeln "namn" inuti funktionen "setName" kommer inte de som ringer kan få åtkomst till den direkt. Men det är inte lätt att direkt sätta variabeln "namn" inuti funktionen "setName" eftersom variabeln inuti ett funktionsblock inte kan användas utanför dess omfattning, därför skulle namnet inte vara tillgängligt för metoden "getName". För denna stängning kommer att hjälpa.

2. Stängningar

När två funktioner samlas tillsammans med referenser till deras omgivande tillstånd eller den lexikala miljön kallas en avslutning. I enkla ord ger stängning tillgång till en lokal variabel av en funktion som ska användas av en annan funktion i en överordnad funktion. Här har vi ett variabelt namn som gömmer sig inuti funktionen setName från omvärlden. Men det inre objektet (myObj) kan komma åt 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 använt begreppet stängning, det inre objektet myObj kan nås av båda funktionerna. Men ändå finns det ett fel vid åtkomst till det inre objektet. Ovan har vi sett medarbetare.getnamn kan inte användas, varken medarbetare.myObj.getnamn kan användas eftersom myObj också är privat för funktionen och privata variabler kan inte nås utanför som denna. Därför måste vi returnera det inre objektet när den anonyma funktionen anropas och tilldela den till en extern 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.

Fördelar med inkapsling i JavaScript

Den största fördelen med att använda inkapsling i JavaScript är att ge säkerheten till data. Andra fördelar med inkapsling inkluderar:

  • Inkapsling skyddar ett objekt mot olaglig tillgång.
  • Inkapsling hjälper till att uppnå en nivå utan att avslöja dess komplexa detaljer.
  • Detta kommer att minska mänskliga fel.
  • Gör applikationen mer flexibel och hanterbar.
  • Förenklar applikationen.

Slutsats

Inkapsling är verktyget i JavaScript som kan användas för att göra den komplexa operationen enkel och hanterbar med att göra den övergripande applikationen säker och enkel att arbeta.

Rekommenderade artiklar

Detta är en guide till Encapsulation i JavaScript. Här diskuterar vi arbetet med inkapsling i javascript tillsammans med begrepp och fördelar. Du kan också titta på följande artiklar för att lära dig mer-

  1. Funktioner i JavaScript (kommentarer)
  2. Matriser i JavaScript - typer och metoder
  3. JavaScript-verktyg
  4. För slinga i JavaScript (Workflow)
  5. Variabler i JavaScript
  6. Typer och hanteringsfel i JavaScript
  7. Regex-funktioner i Python (exempel)
  8. Exempel på kommentarer i PHP

Kategori: