Johdatus kapselointiin JavaScriptiin

JavaScript on tukeva oliopohjainen skriptikieli, joka pystyy rakentamaan monimutkaisia ​​sovelluksia sekä asiakkaalle että palvelin. Mitä korkeampi täytäntöönpano on, sitä paremmin ylläpidettävää ja joustavaa säännöstöä tarvitaan tilanteen ratkaisemiseksi. Kapselointi, yksi olio-ohjelmoinnin periaatteista, on avain tällaisten tavoitteiden saavuttamiseen.

Kapselointi JavaScriptiin on määritelmän mukaan prosessi, jolla data sidotaan toimintoihin, jotka vaikuttavat tietoon. Kapseloinnin avulla voimme hallita ja validoida tietoja. JavaScript-muodossa muuttujat muistuttavat tietoja.

Kapselointi tarkoittaa tiedon piilottamista eli ajatusta siitä, että esineen sisäisiä yksiköitä ei saisi paljastaa suoraan julkisina kokonaisuuksina. Tämä auttaa rajoittamaan muuttujien luvatonta käyttöä. Sen sijaan, jos soittajat haluavat saavuttaa määritellyn tuloksen, sen tulisi käyttää objektin sisällä olevaa julkista menetelmää tai julkisia yksiköitä objektin yksityisten muuttujien käyttämiseen.

Kapseloinnin toiminta JavaScriptillä

Otetaanpa yksinkertainen ongelma, jossa ”työntekijä” -objekti sisältää kaksi attribuuttia “name” -attribuutin.

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

Kaikki näyttää hyvältä yllä olevassa esimerkissä. Loimme objektin, tulostimme sen määritteen arvon ja muokkasimme sitä. Mutta ongelma näyttää syntyvän, kun joku käyttäjä yrittää asettaa kokonaisluvun nimimääritteelle.

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

JavaScriptin osalta tämä on täysin laillista, koska JavaScriptissä muuttuja voi hyväksyä minkä tahansa sille annetun tyypin. Tämän korjaamiseksi meidän on asetettava niiden kelvollisten merkkien alue, jotka voidaan asettaa objektin määritteen nimeen. Nämä validoinnit eivät toimi, jos soittaja voi käyttää ja muuttaa näiden tietojen arvoa. Yksinkertainen ratkaisu tähän olisi

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

Yllä oleva esimerkki soveltaa validointia, mutta siinä on vielä joitain vikoja, koska soittaja saa nimen suoraan, hän voi silti muuttaa sitä.

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.

Lopputavoitteena on, että muuttujan nimeä ei tule olla saatavana maailmanlaajuisesti objektin ”työntekijä” kanssa. Kotelointi auttaa sitä ulos. Tämä voidaan ratkaista käsitteillä Toimintaalue ja Sulkemiset.

1. Toiminta-ala

Kaikki muuttujat, jotka on kirjoitettu toimintojen koodilohkoon, pysyvät piilossa ulkopuolelta.

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

Jos siis siirrämme muuttujaa “name” funktion “setName” sisällä, soittajat eivät pääse siihen suoraan. Mutta muuttujan “name” sijoittaminen suoraan funktion “setName” sisään ei ole helppoa, koska toimintolohkon sisällä olevaa muuttujaa ei voida käyttää sen laajuuden ulkopuolella, joten nimeä ei olisi saatavana “getName” -menetelmälle. Tähän sulkeminen auttaa.

2. Sulkemiset

Kun kaksi toimintoa on niputettu yhdessä viittausten kanssa ympäröivään tilaansa tai leksiseen ympäristöön kutsutaan sulkemisena. Yksinkertaisin sanoin, sulkeminen antaa pääsyn toiminnon paikalliselle muuttujalle, jota toinen toiminto käyttää vanhemman toiminnon sisällä. Täällä meillä on muuttujan nimi piilossa funktio setName sisällä ulkomaailmasta. Mutta sisäinen esine (myObj) voi käyttää sitä:

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!

Nyt olemme käyttäneet sulkemisen käsitettä, sisäiseen esineeseen myObj pääsee molemmat toiminnot. Mutta silti sisäiseen esineeseen pääsyssä on vika. Yllä olemme nähneet, että työntekijä.getNimeä ei voi käyttää, eikä työntekijä.myObj.getNameä voi käyttää, koska myObj on myös yksityinen toiminnolle ja yksityisiä muuttujia ei voida käyttää tällä tavoin ulkopuolella. Siksi meidän on palautettava sisäinen esine aina, kun anonyymi toiminto kutsutaan, ja osoitettava se ulkoiselle muuttujalle.

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.

Kapseloinnin edut JavaScriptiin

Kapseloinnin käytön tärkein etu JavaScriptillä on tietoturvan tarjoaminen. Muita kapseloinnin etuja ovat:

  • Kotelointi suojaa esinettä laitonta pääsyä vastaan.
  • Kapselointi auttaa saavuttamaan tason paljastamatta sen monimutkaisia ​​yksityiskohtia.
  • Tämä vähentää inhimillisiä virheitä.
  • Tee sovelluksesta joustavampi ja hallittavissa.
  • Yksinkertaistaa sovellusta.

johtopäätös

Kotelointi on JavaScriptin työkalu, jota voidaan käyttää monimutkaisen toiminnan helpottamiseksi ja hallittavuudeksi tekemällä koko sovelluksesta turvallinen ja helppo työskennellä.

Suositellut artikkelit

Tämä on opas kapseloinnista JavaScriptiin. Tässä keskustellaan JavaScriptin kapseloinnin käytöstä sekä konsepteista ja eduista. Voit myös katsoa seuraavia artikkeleita saadaksesi lisätietoja-

  1. JavaScriptin ominaisuudet (kommentit)
  2. Matriisit JavaScript - tyypit ja menetelmät
  3. JavaScript-työkalut
  4. Loopille JavaScript (työnkulku)
  5. Muuttujat JavaScript
  6. JavaScriptin tyypit ja käsittelyvirheet
  7. Regex-toiminnot Pythonissa (esimerkki)
  8. Esimerkkejä PHP: n kommentista