--- id: 587d7b8c367417b2b2512b54 title: Use getters and setters to Control Access to an Object challengeType: 1 videoUrl: '' localeTitle: Usar getters y setters para controlar el acceso a un objeto --- ## Description
Puede obtener valores de un objeto y establecer un valor de una propiedad dentro de un objeto. Estos son clásicamente llamados getters y setters . Las funciones de Getter están destinadas a simplemente devolver (obtener) el valor de la variable privada de un objeto al usuario sin que el usuario acceda directamente a la variable privada. Las funciones de Setter están destinadas a modificar (configurar) el valor de la variable privada de un objeto en función del valor pasado a la función de establecimiento. Este cambio podría implicar cálculos, o incluso sobrescribir completamente el valor anterior.
Libro de clase {
constructor (autor) {
this._author = autor;
}
// getter
obtener escritor () {
devuelve esto.
}
// setter
establecer escritor (updatedAuthor) {
this._author = updatedAuthor;
}
}
const lol = libro nuevo ('anónimo');
console.log (lol.writer); // anónimo
lol.writer = 'wut';
console.log (lol.writer); // wut
Observe la sintaxis que estamos utilizando para invocar al captador y al configurador, como si no fueran siquiera funciones. Los captadores y los definidores son importantes porque ocultan los detalles de la implementación interna.
## Instructions
Utilice class palabra clave de class para crear una clase de termostato. El constructor acepta la temperatura Fahrenheit. Ahora cree el getter y el setter en la clase, para obtener la temperatura en la escala Celsius. Recuerde que C = 5/9 * (F - 32) y F = C * 9.0 / 5 + 32 , donde F es el valor de la temperatura en la escala Fahrenheit, y C es el valor de la misma temperatura en la escala Celsius Nota Cuando implementa esto, estarías siguiendo la temperatura dentro de la clase en una escala, ya sea Fahrenheit o Celsius. Este es el poder de getter o setter: está creando una API para otro usuario, que obtendría el resultado correcto, sin importar de cuál sea el seguimiento. En otras palabras, está abstrayendo los detalles de implementación del consumidor.
## Tests
```yml tests: - text: Thermostat debe ser una class con un método constructor definido. testString: 'assert(typeof Thermostat === "function" && typeof Thermostat.constructor === "function","Thermostat should be a class with a defined constructor method.");' - text: Se usó la palabra clave de class . testString: 'getUserInput => assert(getUserInput("index").match(/class/g),"class keyword was used.");' - text: Thermostat puede ser instanciado. testString: 'assert(() => {const t = new Thermostat(32); return typeof t === "object" && t.temperature === 0;}, "Thermostat can be instantiated.");' ```
## Challenge Seed
```js function makeClass() { "use strict"; /* Alter code below this line */ /* Alter code above this line */ return Thermostat; } const Thermostat = makeClass(); const thermos = new Thermostat(76); // setting in Fahrenheit scale let temp = thermos.temperature; // 24.44 in C thermos.temperature = 26; temp = thermos.temperature; // 26 in C ```
## Solution
```js // solution required ```