3.6 KiB
3.6 KiB
id | title | challengeType | videoUrl | localeTitle |
---|---|---|---|---|
587d7b8c367417b2b2512b54 | Use getters and setters to Control Access to an Object | 1 | Use getters e setters para controlar o acesso a um objeto |
Description
livro escolar {Observe a sintaxe que estamos usando para invocar o getter e setter - como se eles não fossem mesmo funções. Getters e setters são importantes porque ocultam detalhes internos de implementação.
construtor (autor) {
this._author = autor;
}
// getter
obter escritor () {
devolve this._author;
}
// setter
set writer (updatedAuthor) {
this._author = updatedAuthor;
}
}
const lol = novo livro ('anônimo');
console.log (lol.writer); // anônimo
lol.writer = 'wut';
console.log (lol.writer); // wut
Instructions
class
para criar uma classe Thermostat. O construtor aceita a temperatura Fahrenheit. Agora crie getter
e setter
na classe, para obter a temperatura na escala Celsius. Lembre-se que C = 5/9 * (F - 32)
e F = C * 9.0 / 5 + 32
, onde F é o valor da temperatura na escala Fahrenheit, e C é o valor da mesma temperatura na escala Celsius. Para implementar isso, você estaria acompanhando a temperatura dentro da classe em uma escala - Fahrenheit ou Celsius. Este é o poder de getter ou setter - você está criando uma API para outro usuário, que obteria o resultado correto, não importando qual deles você rastreie. Em outras palavras, você está abstraindo os detalhes da implementação do consumidor. Tests
tests:
- text: <code>Thermostat</code> deve ser uma <code>class</code> com um 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: palavra-chave <code>class</code> foi usada.
testString: 'getUserInput => assert(getUserInput("index").match(/class/g),"<code>class</code> keyword was used.");'
- text: <code>Thermostat</code> pode 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