Encapsulación en JavaScript | Explicado

Encapsulación en JavaScript | Explicado
Javascript es un poderoso lenguaje de secuencia de objetos que se puede utilizar para desarrollar aplicaciones complejas. Con un aumento en la complejidad de la implementación, la necesidad de mantener el código se maximiza. "Encapsulación"Es uno de los principios encomiables de Programación orientada a objetos(Oop) que ayuda a este respecto.

Con la ayuda de la encapsulación, puede fácilmente unir el datos o una sola unidad a los métodos que realizan algunas operaciones en él. También le permite validar y controlar el flujo de datos en una aplicación JavaScript.

Este artículo explicará la encapsulación en JavaScript con la ayuda de ejemplos adecuados. Entonces, comencemos!

Encapsulación en JavaScript

Encapsulación en JavaScript es una metodología utilizada para Información de ocultación. Se basa en el concepto de que las propiedades del objeto no deben exponerse públicamente al mundo exterior. La implementación de la encapsulación en JavaScript evita el acceso a las variables agregando entidades públicas dentro de un objeto, que las personas que llaman pueden usar para lograr resultados específicos.

Ejemplo: Implementación de la encapsulación en JavaScript

En primer lugar, crearemos un objeto JavaScript llamado "alumno" teniendo un "nombre" propiedad:

estudiante var =
Nombre: "Alexander",
;

En el siguiente paso, imprimiremos el valor inicial del "nombre" propiedad:

consola.Log ("El nombre del estudiante es:"+ Estudiante.nombre);

Entonces, modificaremos el "alumno.nombre"Valor de propiedad y nuevamente utilizar el"consola.registro()Método para mostrarlo en la consola:

alumno.nombre = "max";
consola.Log ("El nombre del estudiante es:"+ Estudiante.nombre);
alumno.nombre = "Pablo";
consola.Log ("El nombre del estudiante es:"+ Estudiante.nombre);

Producción

Como puede ver, todo funciona perfectamente de acuerdo con la lógica adicional. Sin embargo, surgirá un problema cuando un usuario ingrese un valor entero para el "alumno.nombre" propiedad.

Ejemplo: Validación de datos con métodos de encapsulación en JavaScript

Una variable JavaScript puede contener un valor de cualquier tipo de datos, por lo que para resolver el problema mencionado, tenemos que limitar el rango de caracteres legales para el "nombre" El valor de la propiedad. Para este propósito, utilizaremos un Expresión regex "/\ d+/"Eso mantendrá un chequeo"uno o más ocurrencias de los caracteres dígitos (0-9)". Esta expresión de regex se agregará en un nuevo método de setter, "escoger un nombre"Que realiza más pruebas:

estudiante var =
Nombre: "Alexander",
setname: function (valor)
VAR Expression = new Regexp (/\ d+/);
if (expresión.prueba (valor))
consola.log ("se ingresa el nombre no válido");

demás
este.nombre = valor;

A continuación, agregaremos un método getter "nombre"Para recuperar el"alumno.nombre" El valor de la propiedad:

getName: function ()
devolver esto.nombre;

;
consola.Log (estudiante.getName ());
alumno.setName ("max");
consola.Log (estudiante.getName ());
alumno.setName (34);
consola.Log (estudiante.getName ());

Ahora, si la declaración "expresión.Prueba (valor)"Evalúa que es"verdadero,"Entonces se mostrará un mensaje en la ventana de la consola que indica que"Se ingresa el nombre no válido", De lo contrario el"valor"Aprobado como argumento se asignará al"nombre" propiedad:

Hemos realizado con éxito la validación utilizando una expresión regex en el método setter, pero nuestro programa no está completamente encapsulado. Eso es porque el "nombre"La propiedad se declara a nivel mundial, lo que permite a la persona que llama acceder y modificar su valor:

alumno.nombre = 34;
consola.Log (estudiante.getName ());

La salida dada anteriormente muestra que cuando hemos accedido directamente al "nombre"Propiedad del"alumno"Objeto, la validación no ocurre, y"34"Se establece como el valor de la propiedad. Esta acción demuestra que si la propiedad de un objeto está disponible a nivel mundial, se puede acceder fácilmente, lo que corre el riesgo de la seguridad de los datos.

Encapsulación en JavaScript usando el alcance de la función

En lugar de exponer las propiedades del objeto; Necesitamos esconderlo del exterior. Para hacerlo, puedes usar el "varillaPalabra clave para definir una propiedad privada y encerrarla en el alcance de una función.

Ejemplo: Encapsulación en JavaScript usando el alcance de la función

En el siguiente "newfunc () " definición, "X"Es una variable privada a la que se puede acceder dentro del cuerpo de la función:

function newfunc ()

var x = "Linuxhint.com ";
consola.log (x);

consola.log (x);

La ejecución del código proporcionado muestra un error porque "X"Se define en el"newfunc ()"Y lo estamos accediendo en términos de alcance global:

Del mismo modo, agregando "nombre"Como una variable privada dentro del"setter"El método restringirá su acceso directo. En este escenario, el "nombre"La variable no se puede utilizar fuera del"setter"Alcance del método, lo que significa que el"adquiridorEl método no puede acceder a él también.

Usando "Cierre"Es la forma más simple y elegante de implementar la encapsulación en JavaScript.

Encapsulación en JavaScript usando cierres

Dentro de una función principal, "Cierre"Permitir que una función utilice la variable local de otra función.

Por ejemplo, tenemos una variable privada "nombre", A la que se puede acceder por ambos métodos"nombre" y "escoger un nombre"Dentro del alcance de la función. Como resultado, cada vez que se invoca la función anónima, debe devolver el objeto interno y asignarlo a una variable externa.

Ejemplo: Encapsulación en JavaScript usando cierres

En este ejemplo, cuando invocamos el "escoger un nombre()" y "getName ()"Funciones, esta acción genera un nuevo alcance de cierre de invocación. El alcance se conserva luego devolviendo un puntero al "alumno" objeto:

var student = function ()
var name = "Alexander";
VAR Expression = new Regexp (/\ d+/);
devolver
setname: function (valor)
if (expresión.prueba (valor))
consola.log ("se ingresa el nombre no válido");

demás
nombre = valor;

,
getName: function ()
nombre de retorno;

;
();

La función dada que termina con "()"Indica que estamos invocando la función y asignando el valor devuelto al"alumno" variable:

consola.Log (estudiante.getName ());
alumno.setName ("max");
consola.Log (estudiante.getName ());
alumno.setName (76);
alumno.nombre = 76;
consola.Log (estudiante.getName ());

En este caso, la encapsulación se implementa completamente utilizando Cierre, y las personas que llaman no pueden acceder a la variable privada directamente:

Eso se trataba de la información básica relacionada con Encapsulación en Javascript; Puede explorarlo más de acuerdo con nuestros requisitos.

Conclusión

Usando ESCOPES DE FUNCIONES y Cierre, Encapsulación en Javascript se puede implementar fácilmente. Con la ayuda de la encapsulación, puede unir los datos o una sola unidad a los métodos que realizan algunas operaciones en él. También le permite validar y controlar el flujo de datos en una aplicación JavaScript. Este artículo explicó la encapsulación en JavaScript junto con ejemplos adecuados.