freeCodeCamp/curriculum/challenges/spanish/02-javascript-algorithms-an.../es6/use-getters-and-setters-to-...

3.7 KiB

id title challengeType videoUrl localeTitle
587d7b8c367417b2b2512b54 Use getters and setters to Control Access to an Object 1 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

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