Uvod v kapsulacijo v JavaScript

JavaScript je močan objektno orientiran skriptni jezik, ki je sposoben graditi zapletene aplikacije tako za stranko kot za strežnik. Toda višja je zapletenost pri izvajanju, za reševanje razmer je potrebna boljša vzdržna in prilagodljiva koda. Enkapsulacija, eno od načel objektno usmerjenega programiranja, je ključno za doseganje takšnih ciljev.

Enkapsulacija v JavaScript je proces vezave podatkov s funkcijami, ki delujejo na podatke. Enkapsulacija nam omogoča nadzor in potrditev podatkov. V JavaScript spremenljivke spominjajo na podatke.

Inkapsulacija pomeni skrivanje informacij, tj. Ideja, da notranji subjekti predmeta ne smejo biti goli kot javni subjekti. To bo pomagalo omejiti nepooblaščeno uporabo spremenljivk. Če kličoči želijo doseči določen rezultat, bi morali za dostop do zasebnih spremenljivk predmeta uporabiti javno metodo ali javne subjekte znotraj predmeta.

Delovanje kapsule v JavaScript

Vzemimo preprosto težavo, kadar predmet "zaposleni" vsebuje dva atributa atribut "name".

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

V zgornjem primeru je vse videti v redu. Objekt smo ustvarili, natisnili njegovo vrednost atributa in ga spremenili. Toda zdi se, da težava nastane, ko nek uporabnik poskuša določiti celo število za atribut name.

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

Kar zadeva JavaScript, je to popolnoma zakonito, saj v JavaScript lahko spremenljivka sprejme katero koli vrsto, ki mu je bila dana. Da bi to odpravili, moramo nastaviti obseg veljavnih znakov, ki jih lahko nastavimo na ime atributa predmeta. Te potrditve ne morejo delovati, če klicatelj lahko dostopa do njih in spremeni njihovo vrednost. Preprosta rešitev za to bi bila

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

Zgornji primer velja za preverjanje veljavnosti, vendar ima še vedno nekaj napak, kot če klicatelj neposredno dostopa do imena, še vedno ga lahko spremeni.

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.

Končni cilj tukaj je, da ime spremenljivke ne bi bilo na voljo globalno s predmetom "zaposleni". Enkapsulacija ji pomaga. To je mogoče rešiti s konceptoma Obseg delovanja in zapore.

1. Obseg funkcije

Vsaka spremenljivka, ki je napisana znotraj kodnega bloka funkcij, ostane skrita od zunaj.

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

Če torej spremenimo spremenljivko "name" v funkcijo "setName", kličoči ne bodo mogli neposredno dostopati do nje. Toda spremenljivke „name“ ni enostavno umestiti v funkcijo „setName“, saj spremenljivke znotraj funkcijskega bloka ni mogoče uporabiti zunaj njenega obsega, zato ime ne bi bilo na voljo za metodo getName. Za to bo pomagalo Zapiranje.

2. Zaprtja

Če sta dve funkciji združeni s sklicevanji na njihovo okoliško stanje ali pa je leksikalno okolje znano kot zapiranje. Z enostavnimi besedami, zaprtje omogoča dostop do lokalne spremenljivke funkcije, ki jo uporablja druga funkcija znotraj nadrejene funkcije. Tu imamo spremenljivo ime, ki se skriva znotraj funkcije setName iz zunanjega sveta. Toda notranji predmet (myObj) lahko do njega dostopa:

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!

Zdaj smo uporabili koncept zapiranja, do notranjega predmeta myObj lahko dostopata obe funkciji. Toda kljub temu obstaja napaka za dostop do notranjega predmeta. Zgoraj smo videli, da zaposlenega.getName ni mogoče uporabiti, niti zaposlenega.myObj.getName ni mogoče uporabiti, ker je myObj tudi funkcijo zaseben, do zasebnih spremenljivk pa ni mogoče dostopati zunaj kot to. Zato moramo notranji objekt vrniti, kadarkoli pokličemo anonimno funkcijo in jo dodeliti zunanji spremenljivki.

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.

Prednosti Encapsulacije v JavaScript

Glavna prednost uporabe enkapsulacije v JavaScript je zagotavljanje varnosti podatkov. Druge prednosti enkapsulacije vključujejo:

  • Inkapsulacija ščiti predmet pred nezakonitim dostopom.
  • Enkapsulacija pomaga doseči raven, ne da bi razkrila njene zapletene podrobnosti.
  • To bo zmanjšalo človeške napake.
  • Naredite aplikacijo bolj prilagodljivo in vodljivo.
  • Poenostavlja aplikacijo.

Zaključek

Inkapsulacija je orodje v JavaScript, s katerim je zapleteno delovanje enostavno in obvladljivo, tako da je celotna aplikacija varna in enostavna za delo.

Priporočeni članki

To je vodnik za Encapsulacijo v JavaScript. Tukaj razpravljamo o delovanju enkapsulacije v JavaScript, skupaj s koncepti in prednostmi. Če želite izvedeti več, si oglejte tudi naslednje članke -

  1. Značilnosti JavaScript (komentarji)
  2. Nizi v JavaScript - Vrste in metode
  3. Orodja JavaScript
  4. Za zanko v JavaScript (Workflow)
  5. Spremenljivke v JavaScript
  6. Vrste in napake pri rokovanju v JavaScript
  7. Funkcije Regex v Pythonu (primer)
  8. Primeri komentarjev v PHP