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

实例化Player类对象后调用方法返回undefined问题排查

解答你的Player类方法调用问题

嘿,我来帮你梳理下当前遇到的问题和对应的解决方案:

1. 为什么调用addScore会返回undefined?

这其实是JavaScript的正常行为,不是你的类写法有问题。JavaScript中,任何没有显式return语句的函数/方法,执行后都会默认返回undefined。你的addScore方法只完成了更新total和scores的操作,没有指定返回值,所以调用john.addScore(70)后得到undefined是完全符合预期的。

如果你希望调用这个方法后能获取到更新后的结果(比如最新的总分),只需要给方法添加一个返回语句即可:

addScore(score) {
  this.total += score;
  this.scores.push(score);
  return this.total; // 也可以返回this.scores,根据你的需求选择
}

2. resetScore方法存在一个隐性bug

仔细看你的resetScore代码:

resetScore() {
  this.scores = [];
  this.score = 0;
}

你在这里给this.score赋值为0,但你的Player类在构造器里定义的总分属性是this.total,不是this.score。这会导致执行重置操作后,this.total依然保留原来的数值,反而会给实例新增一个无用的score属性。正确的写法应该是:

resetScore() {
  this.scores = [];
  this.total = 0; // 与构造器中的属性名保持一致
}

3. 关于this关键字的疑问

你对this的使用是完全正确的!在类的方法中,this默认指向调用该方法的实例对象(也就是这里的john)。从你控制台打印的john信息来看,addScore(70)确实已经成功更新了scores和total的值,这就证明this在方法里正常工作了——返回undefined只是方法没有返回值的问题,和this无关。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:02:05