3.8 KiB
3.8 KiB
id | title | localeTitle | challengeType |
---|---|---|---|
587d7b8c367417b2b2512b54 | Use getters and setters to Control Access to an Object | Usar getters y setters para controlar el acceso a un objeto | 1 |
Description
class Book {Observe la sintaxis que estamos utilizando para invocar al captador y al configurador, como si no fueran siquiera funciones. Getters y setters son importantes, ya que ocultan los detalles de la implementación interna.
constructor(author) {
this._author = author;
}
// getter
get writer(){
return this._author;
}
// setter
set writer(updatedAuthor){
this._author = updatedAuthor;
}
}
const lol = new Book('anonymous');
console.log(lol.writer); // anonymous
lol.writer = 'wut';
console.log(lol.writer); // wut
Instructions
class
palabra clave de la 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 implementes esto, estarás 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
tests:
- text: <code>Thermostat</code> debe ser una <code>class</code> con un método <code>constructor</code> definido.
testString: 'assert(typeof Thermostat === "function" && typeof Thermostat.constructor === "function","<code>Thermostat</code> should be a <code>class</code> with a defined <code>constructor</code> method.");'
- text: Se usó la palabra clave de <code>class</code> .
testString: 'getUserInput => assert(getUserInput("index").match(/class/g),"<code>class</code> keyword was used.");'
- text: <code>Thermostat</code> puede ser instanciado.
testString: 'assert(() => {const t = new Thermostat(32); return typeof t === "object" && t.temperature === 0;}, "<code>Thermostat</code> can be instantiated.");'
Challenge Seed
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
// solution required