我知道这段代码的原因是将华氏温度改为摄氏温度,但如果get已经以摄氏度返回温度,那么setter在代码中做了什么?
function makeClass() {
"use strict";
/* Alter code below this line */
class Thermostat{
constructor(value){
this._fahrenheit = value;
}
get temperature(){
return (5/9 * (this._fahrenheit - 32));
}
set temperature(value){
this._fahrenheit - (value * 9) / 5.0 + 32;
}
}
/* Alter code above this line */
return Thermostat;
}
const Thermostat = makeClass();
const thermos = new Thermostat(76); // setting in Farenheit scale
let temp = thermos.temperature; // 24.44 in C
thermos.temperature = 26;
temp = thermos.temperature; // 26 in C
答案 0 :(得分:1)
我同意这个制定者似乎没有用处。事实上,它阻止了这个类的工作(假设)。
此行无效,因为它不会更新_fahrenheit
属性:
this._fahrenheit - (value * 9) / 5.0 + 32;
它应该只是“记录”新值并让getter进行转换:
function makeClass() {
"use strict";
class Thermostat {
constructor(value) {
this._fahrenheit = value;
}
get temperature() {
return (5 / 9 * (this._fahrenheit - 32));
}
set temperature(value) {
this._fahrenheit = value;
}
}
return Thermostat;
}
const Thermostat = makeClass();
const thermos = new Thermostat(76); // setting in Farenheit scale
let temp = thermos.temperature; // 24.4444° Celcius
console.log(thermos.temperature);
thermos.temperature = 98.6;
console.log(thermos.temperature); // 37° Celcius
答案 1 :(得分:1)
通过实现设置器功能,您可以让用户仍然选择选择摄氏或华氏度的温度来获取正确的值。
答案 2 :(得分:0)
进行一些计算,但不返回任何值,也不设置任何变量。除了消耗最少的处理器时间外,它什么都不做。