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

JavaScript面向对象编程:实现Calculator类问题求助

修正JavaScript Calculator类实现

需求说明

  • 创建一个Calculator类
  • 实例化对象时,total属性初始化为0
  • 实现以下实例方法,所有方法需先更新total属性,再返回更新后的total值:
    • add(num):将num加到total上
    • subtract(num):从total中减去num
    • divide(num):将total除以num
    • multiply(num):将total乘以num

预期行为示例

let calculator = new Calculator();
console.log(calculator.add(50));      // => 50
console.log(calculator.subtract(35)); // => 15
console.log(calculator.multiply(10)); // => 150
console.log(calculator.divide(5));    // => 30
console.log(calculator.total)         // => 30

问题代码

当前代码仅返回计算结果,但未更新实例的total属性,导致后续操作无法基于前一次的结果计算:

class Calculator {
    constructor(total = 0,) {
        this.total = total
    }
    add(num){
        return num + this.total
    }
    subtract(num) {
        return this.total - num
    }
    divide(num) {
        return this.total / num
    }
    multiply(num) {
        return this.total * num
    }
}

修正后的代码

需要先修改this.total的值,再返回更新后的属性:

class Calculator {
    constructor() {
        // 直接按需求初始化total为0
        this.total = 0;
    }
    add(num) {
        this.total += num;
        return this.total;
    }
    subtract(num) {
        this.total -= num;
        return this.total;
    }
    divide(num) {
        // 可选:添加除数为0的错误处理,避免运行时异常
        if (num === 0) {
            throw new Error("Cannot divide by zero");
        }
        this.total /= num;
        return this.total;
    }
    multiply(num) {
        this.total *= num;
        return this.total;
    }
}

关键修正点

  1. 构造函数直接初始化this.total = 0,无需设置可选参数(需求明确要求初始值为0)
  2. 每个方法通过+=/-=/*=//=操作符更新this.total,再返回更新后的值
  3. 可选添加了除数为0的错误处理,增强代码健壮性

内容的提问来源于stack exchange,提问作者Aaliyah Sade

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:10:26