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

ES6中如何正确将对象作为方法参数?Point类方法实现问题

修正ES6 Point类的plus方法实现加法功能

嘿,你的代码里有两个小问题导致没法得到预期结果,我来帮你逐个修正:

首先,JavaScript是弱类型语言,函数参数不能像Java那样指定类型(也就是plus(Point p)这种写法不合法),直接写参数名就行。其次,你在plus方法里错误地访问了p.a和p.b,但你的Point类构造函数里定义的属性是x和y,这里属性名对应错了。

下面是修正后的完整代码:

class Point {
  constructor(x, y) {
    this.x = x;
    this.y = y;
  }

  plus(p) { // 去掉参数的类型声明
    return new Point(p.x + this.x, p.y + this.y); // 用正确的x、y属性计算
  }
}

console.log(new Point(1, 2).plus(new Point(2, 1))); // 输出: Point { x: 3, y: 3 }

再给你拆解下修改点:

  • 把plus(Point p)改成plus(p):JS不需要在参数前指定类型,直接接收传入的对象即可
  • 把p.a、p.b替换成p.x、p.y:和Point类构造函数里定义的属性保持一致,这样才能正确获取传入点的坐标值
  • 另外你之前的console.log(p.a)其实没必要留着,因为传入的p对象根本没有a属性,会输出undefined,所以直接删掉就好

这样运行代码就能得到你想要的Point{x: 3, y: 3}结果啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:40:23