You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用getter与setter控制对象访问:Thermostat类实现疑问

现有代码问题说明

  1. 你定义了static celcius静态属性,该属性属于类本身而非单个实例,会导致所有Thermostat实例共享同一个温度值,不符合需求。
  2. 构造函数仅存储了传入的华氏温度,没有完成初始值的对应处理,导致实例化后首次调用temperature getter会返回undefined。
  3. setter逻辑错误:作业要求setter接收的是摄氏温度值,你代码里错误将传入值当作华氏温度做换算,也没有同步更新内部的华氏温度存储。

修正后实现代码

// Only change code below this line
class Thermostat {
  constructor(fTemp) {
    // 内部仅以华氏度为基准存储温度,符合作业单温标跟踪要求
    this._fTemp = fTemp;
  }

  // getter 自动将内部华氏度转为摄氏度返回
  get temperature() {
    return Number((5 / 9 * (this._fTemp - 32)).toFixed(2));
  }

  // setter 接收摄氏温度,转为华氏度后更新内部存储
  set temperature(cTemp) {
    this._fTemp = cTemp * 9.0 / 5 + 32;
  }
}
// Only change code above this line

const thermos = new Thermostat(76); // 构造传入华氏温度
let temp = thermos.temperature; // 24.44 摄氏度
thermos.temperature = 26; // 传入摄氏温度设置
temp = thermos.temperature; // 26 摄氏度

实现说明

  • 内部使用下划线前缀_fTemp标识内部私有属性,避免和公开的temperature存取器冲突
  • 所有转换逻辑封装在类内部,对用户完全屏蔽实现细节,用户仅需通过temperature属性即可读写摄氏温度,双向转换自动完成
  • 完全满足所有作业校验要求,实例化、getter/setter调用均可正常返回预期结果

内容的提问来源于stack exchange,提问作者Claude Manbodh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 08:45:04