Incapsulamento in JavaScript | Spiegato

Incapsulamento in JavaScript | Spiegato
JavaScript è un potente linguaggio di scripting orientato agli oggetti che può essere utilizzato per lo sviluppo di applicazioni complesse. Con un aumento della complessità dell'implementazione, la necessità di mantenere il codice viene massimizzata. "Incapsulamento"È uno dei principi lodevoli di Programmazione orientata agli oggetti(Oop) che assiste in questo senso.

Con l'aiuto dell'incapsulamento, puoi facilmente legamento IL dati o una singola unità ai metodi che stanno eseguendo alcune operazioni su di esso. Ti consente inoltre di convalidare e controllare il flusso di dati in un'applicazione JavaScript.

Questo articolo spiegherà l'incapsulamento in JavaScript con l'aiuto di esempi adatti. Quindi iniziamo!

Incapsulamento in javascript

Incapsulamento In JavaScript è una metodologia utilizzata per Nascondere informazioni. Si basa sul concetto che le proprietà degli oggetti non dovrebbero essere esposte pubblicamente al mondo esterno. L'implementazione dell'incapsulamento in JavaScript impedisce l'accesso alle variabili aggiungendo entità pubbliche all'interno di un oggetto, che i chiamanti possono utilizzare per ottenere risultati specifici.

Esempio: implementazione dell'incapsulamento in JavaScript

Prima di tutto, creeremo un oggetto JavaScript chiamato "alunno" avere un "nome" proprietà:

var Student =
Nome: "Alexander",
;

Nel prossimo passaggio, stamperemo il valore iniziale di "nome" proprietà:

console.log ("Il nome dello studente è:"+ studente.nome);

Quindi, modificheremo il "alunno.nome"Valore della proprietà e di nuovo utilizza il"console.tronco d'albero()"Metodo per visualizzarlo nella console:

alunno.name = "max";
console.log ("Il nome dello studente è:"+ studente.nome);
alunno.name = "Paul";
console.log ("Il nome dello studente è:"+ studente.nome);

Produzione

Come puoi vedere, tutto funziona perfettamente in base alla logica aggiunta. Tuttavia, sorgerà un problema quando un utente inserisce un valore intero per "alunno.nome" proprietà.

Esempio: convalida dei dati con metodi di incapsulamento in JavaScript

Una variabile JavaScript può contenere un valore di qualsiasi tipo di dati, quindi per risolvere il problema menzionato, dobbiamo limitare la gamma di caratteri legali per "nome" costo dell'immobile. A tale scopo, utilizzeremo a Regex espressione "/\ d+/"Ciò manterrà un controllo"Uno o più occorrenze dei caratteri delle cifre (0-9)". Questa espressione di regex verrà aggiunta in un nuovo metodo setter, "imposta nome"Che esegue ulteriori test:

var Student =
Nome: "Alexander",
setname: function (value)
var espression = new regexp (/\ d+/);
Se (espressione.test (value))
console.log ("Il nome non valido è inserito");

altro
Questo.nome = valore;

Successivamente, aggiungeremo un metodo getter "getname"Per recuperare il"alunno.nome" costo dell'immobile:

getName: function ()
Restituisci questo.nome;

;
console.registro (studente.getName ());
alunno.setName ("max");
console.registro (studente.getName ());
alunno.setName (34);
console.registro (studente.getName ());

Ora, se l'affermazione "espressione.Test (valore)"Valuta di essere"VERO,"Quindi verrà visualizzato un messaggio nella finestra della console affermando che"Viene inserito il nome non valido", Altrimenti il"valore"Passato come argomento verrà assegnato al"nome" proprietà:

Abbiamo eseguito correttamente la convalida usando un'espressione di regex nel metodo setter, ma il nostro programma non è completamente incapsulato. Questo perché il "nome"La proprietà è dichiarata a livello globale, che consente al chiamante di accedere e modificarne il valore:

alunno.nome = 34;
console.registro (studente.getName ());

L'output di cui sopra mostra che quando abbiamo accettato direttamente "nome"Proprietà del"alunno"Oggetto, la convalida non accade e"34"È impostato come valore della proprietà. Questa azione dimostra che se la proprietà di un oggetto è disponibile a livello globale, è possibile accedere facilmente, il che rischia la sicurezza dei dati.

Incapsulamento in JavaScript usando l'ambito della funzione

Piuttosto che esporre le proprietà dell'oggetto; dobbiamo nasconderlo dall'esterno. Per farlo, puoi usare il "var"Parola chiave per definire una proprietà privata e racchiuderla nell'ambito di una funzione.

Esempio: incapsulamento in JavaScript usando l'ambito della funzione

Nel seguente "newfunc () " Definizione, "X"È una variabile privata a cui è possibile accedere all'interno del corpo della funzione:

funzione newFunc ()

var x = "linuxhint.com ";
console.log (x);

console.log (x);

L'esecuzione del codice fornito mostra un errore perché "X"È definito in"newfunc ()"E lo accessiamo in termini di portata globale:

Allo stesso modo, aggiungendo "nome"Come variabile privata all'interno del"setter"Il metodo limiterà il suo accesso diretto. In questo scenario, il "nome"La variabile non può essere utilizzata al di fuori del"setter"Ambito del metodo, il che significa che il"getter"Anche il metodo non può accedervi.

Usando "Chiusure"È il modo più semplice ed elegante per implementare l'incapsulamento in JavaScript.

Incapsulamento in JavaScript usando le chiusure

All'interno di una funzione genitore, "Chiusure"Consenti a una funzione di utilizzare la variabile locale di un'altra funzione.

Ad esempio, abbiamo una variabile privata "nome", A cui è possibile accedere con entrambi i metodi"getname" E "imposta nome"All'interno dell'ambito della funzione. Di conseguenza, ogni volta che viene invocata la funzione anonima, deve restituire l'oggetto interno e assegnarlo a una variabile esterna.

Esempio: incapsulamento in JavaScript usando le chiusure

In questo esempio, quando invochiamo il "imposta nome()" E "getName ()"Funzioni, questa azione genera un nuovo ambito di chiusura di invocazione. L'ambito viene quindi preservato restituendo un puntatore al "alunno"Oggetto:

var Student = function ()
var name = "Alexander";
var espression = new regexp (/\ d+/);
ritorno
setname: function (value)
Se (espressione.test (value))
console.log ("Il nome non valido è inserito");

altro
nome = valore;

,
getName: function ()
Nome di ritorno;

;
();

La funzione data che termina con “()"Indica che stiamo invocando la funzione e assegnando il valore restituito al"alunno"Variabile:

console.registro (studente.getName ());
alunno.setName ("max");
console.registro (studente.getName ());
alunno.setName (76);
alunno.nome = 76;
console.registro (studente.getName ());

In questo caso, l'incapsulamento è completamente implementato utilizzando Chiusure, e i chiamanti non possono accedere direttamente alla variabile privata:

Questo riguardava le informazioni di base relative a Incapsulamento In JavaScript; Puoi esplorarlo ulteriormente in base alle nostre esigenze.

Conclusione

Usando Scopi della funzione E Chiusure, Incapsulamento In JavaScript può essere implementato facilmente. Con l'aiuto dell'incapsulamento, è possibile associare i dati o una singola unità ai metodi che stanno eseguendo alcune operazioni su di esso. Ti consente inoltre di convalidare e controllare il flusso di dati in un'applicazione JavaScript. Questo articolo ha spiegato l'incapsulamento in JavaScript insieme ad esempi adeguati.