JavaScript面向对象编程:实现Calculator类问题求助
修正JavaScript Calculator类实现
需求说明
- 创建一个
Calculator类 - 实例化对象时,
total属性初始化为0 - 实现以下实例方法,所有方法需先更新
total属性,再返回更新后的total值:add(num):将num加到total上subtract(num):从total中减去numdivide(num):将total除以nummultiply(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; } }
关键修正点
- 构造函数直接初始化
this.total = 0,无需设置可选参数(需求明确要求初始值为0) - 每个方法通过
+=/-=/*=//=操作符更新this.total,再返回更新后的值 - 可选添加了除数为0的错误处理,增强代码健壮性
内容的提问来源于stack exchange,提问作者Aaliyah Sade
相关产品推荐
相关产品推荐

