Getters and Setters en la clase JavaScript

Getters and Setters en la clase JavaScript

En una clase de JavaScript, se usan getters y setters para obtener o establecer los valores de las propiedades. "conseguir"¿Se utiliza la palabra clave para definir un adquiridor Método para recuperar el valor de la propiedad, mientras que "colocar"Define un método setter para cambiar el valor de una propiedad específica. Cuando queremos acceder a una propiedad de nuestro objeto JavaScript, se usa el valor devuelto por el método getter, y para establecer un valor de propiedad, se invoca el método setter y luego pasamos el valor como un argumento que queremos establecer.

Este artículo discutirá a Getters y Setters en JavaScript. Además, también demostraremos ejemplos relacionados con el uso de la definición de Getter y Setter en la clase JavaScript. Entonces, comencemos!

Getters and Setters en la clase JavaScript

En el ejemplo dado a continuación, crearemos un "Empleado"Clase que tiene un constructor. El constructor del "Empleado"La clase inicializará al empleado"nombre"A la cadena pasada como argumento:

ClassEmployee
constructor (nombre)
este.nombre = nombre;

Ahora, crearemos un objeto de clase de empleado llamado "empleado" y añadir "Jacobo"Como su nombre:

dejar empleado = nuevo empleado ("Jack");

Después de hacerlo, podemos acceder al "nombre"Propiedad del"empleado"Objeto de la siguiente manera:

consola.Registro (empleado.nombre);

La salida del programa anterior se muestra a continuación:

A veces, es posible que no desee acceder directamente a una propiedad. Ahí es donde la pareja de Getter y Setter llega a la obra.

Ejemplo 1: Getters and Setters en la clase JavaScript

Para demostrar el uso del Getter and Setter, en primer lugar, crearemos un "Empleado"Clase que tiene una"nombre" propiedad:

ClassEmployee
constructor (nombre)
este.setName (nombre);

En el siguiente paso, definiremos un "getName ()"Método que devolverá el valor del empleado"nombre" propiedad:

getName ()
regreso.nombre;

Otro método que vamos a agregar es "escoger un nombre()". El método setname () de nuestra clase de empleados tiene un "nuevo nombreParámetro. Este método eliminará cualquier espacio en blanco del valor del "nuevo nombre" Y también lanzará una excepción si no ha ingresado ningún nombre:

setName (Newname)
Newname = Newname.recortar();
if (newname === ")
arrojar a los nombres de un empleado ';

este.nombre = Newname;

Como hemos llamado nuestro "escoger un nombre()"Método en el constructor, por lo que cada vez que creamos un"Empleado"Objeto, el"nombre"Aprobado como el argumento será tomado por el método setname (). Luego, el constructor cambiará el flujo de control al método setname (), y establecerá los valores aprobados un argumento como "Empleado" nombre del objeto:

dejar empleado = nuevo empleado ('Jack Smith');
consola.log (empleado);

También puede invocar el creado "escoger un nombre()" y "getName ()"Métodos de la siguiente manera:

empleado.setName ('William Smith');
consola.Registro (empleado.getName ());

Las líneas de código anteriores se establecerán "William Smith"Como el nombre del"empleado" objeto. Entonces el "getName ()El método "le informará sobre el valor de la propiedad del nombre del empleado:

En el ejemplo proporcionado, el método setname () y getName () funciona como getter y setter .

Ejemplo 2: Getters and Setters en la clase JavaScript

Para definir getters y setters en la clase JavaScript, ES6 también ofrece una sintaxis específica. Para mostrarle cómo usar eso, nos mudaremos a nuestra clase de empleados:

ClassEmployee
constructor (nombre)
este.nombre = nombre;

Luego definiremos el método Getter utilizando la palabra clave "conseguir"Que será seguido por el nombre del método. Otra cosa que nos gustaría mencionar aquí es que el "nombre"Propiedad de nuestro"Empleado"La clase será un cambio a"_nombre"Para evitar el conflicto con el Getter y Setter:

getName ()
regreso._nombre;

Para definir un método setter, debe agregar el "setter"Palabra clave antes de especificar el nombre del método:

establecer nombre (Newname)
Newname = Newname.recortar();
if (newname === ")
arrojar 'amablemente ingrese a un nombre de empleado';

este._name = Newname;

Cuando asigne cualquier valor al "nombre"Propiedad de su"Empleado"Objeto de clase, JavaScript invocará el método Setter"nombre()":

empleado.nombre = 'Paul Max';

A continuación, llamaremos al método Out Getter al usar la sintaxis dada a continuación:

Dejar empname = empleado.nombre;

Ahora, cuando el intérprete de JavaScript ejecutará las líneas anteriores, verificará allí existe cualquier "nombre"Propiedad en el"Empleado" clase. Buscará aún más cualquier método que vincule el "nombre"Propiedad si no se encuentra. En nuestro caso, el intérprete accederá al método Getter y después de ejecutarlo, devolverá el valor de "nombre" propiedad:

En caso de que no haya definido un método Setter en su clase JavaScript, obtendrá un TypeError que indique que no puede establecer la propiedad "nombre" del "Empleado"Objeto, como el"Empleado"La clase solo tiene una función Getter:

empleado de clase
constructor (nombre)
este.nombre = nombre;

Get Name ()
regreso._nombre;

// sin método setter

dejar empleado = nuevo empleado ("Stephen Edward");
consola.Registro (empleado.nombre);

Aquí, intentaremos cambiar el nombre de nuestro "empleado" objeto; Sin embargo, no hemos agregado ningún método setter en nuestra clase:

empleado.nombre = 'Paul Smith';
consola.Registro (empleado.nombre);

Como puede ver, hemos encontrado un error de tipo al intentar establecer el valor de la propiedad del nombre:

Conclusión

Usando las palabras clave Get and Set, puede definir fácilmente los métodos Getter y Setter en una clase de JavaScript. El método getter devuelve el valor de la propiedad, mientras que, en el método setter, se pasa un argumento al método setter, que asigna ese valor específico a la propiedad del objeto de clase JavaScript. Este artículo discutió a Getters and Setters en JavaScript. Además, también demostramos ejemplos relacionados con la definición y el uso de Getter y Setter en la clase JavaScript.