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
相关产品推荐
相关产品推荐

