我的问题是关于函数makeClass()中的setter函数的。
set temperature(celsius) {
this.farenheit = celsius * 9.0 / 5 + 32;
}
代码为什么要使用计算F = C * 9.0 / 5 + 32,这是Farenheit的公式,并返回26摄氏度而不是26摄氏度,如下面在makeClass( )功能。
temp =保温温度; // 26 in C
下面是freecodecamp的练习,它是正确的,但由于上述原因,我实际上并不理解它的工作原理。
function makeClass() {
"use strict";
/* Alter code below this line */
class Thermostat {
constructor(farenheit) {
this.farenheit = farenheit;
}
get temperature() {
return 5 / 9 * (this.farenheit - 32);
}
set temperature(celsius) {
this.farenheit = celsius * 9.0 / 5 + 32;
}
}
/* 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
console.log(temp)
thermos.temperature = 26;
temp = thermos.temperature; // 26 in C
console.log(temp)
答案 0 :(得分:0)
构造函数希望您以华氏度传递值并将其存储为华氏度。
getter被编程为以摄氏度返回值,因此由于该值以前以华氏度存储,因此必须将存储的值转换为摄氏。
设置程序被编程为接受摄氏温度值,但将其存储在华氏温度中,因此必须将传递给华氏温度的值转换为华氏温度。
我不知道为什么将构造函数编程为接受以华氏度表示的值,但是将getter和setter设置为摄氏度。您必须要问代码设计者为什么要这么做。我的猜测是,这只是出于演示的目的,向您展示如何拥有一个可自动为您处理单位转换的getter / setter。
答案 1 :(得分:0)
26在setter函数中传递给参数celsius并转换为farenheit,结果在getter函数中传递给this.farenheit并转换为celsius,在函数外部调用时返回26 C。