Javascript类中的方法链接

Javascript类中的方法链接,javascript,method-chaining,Javascript,Method Chaining,我试图在我的子类“setBall”中实现方法链接 在控制台中测试时收到的错误是:Uncaught SyntaxError:Unexpected token. 如果在它们之间添加.prototype,也会出现相同的错误。 这些方法在前面没有“setBall”的情况下工作,但不是输入: *Ball2.设置名称(“蓝色”) 2.设置尺寸(2) 2.设定功率(3)* 我想输入: Ball2.setName('blue')。setSize(2)。setPower(3) 我的问题是,如何在类中链接这些方法?

我试图在我的子类“setBall”中实现方法链接

在控制台中测试时收到的错误是:Uncaught SyntaxError:Unexpected token.

如果在它们之间添加.prototype,也会出现相同的错误。 这些方法在前面没有“setBall”的情况下工作,但不是输入:

*Ball2.设置名称(“蓝色”)

2.设置尺寸(2)

2.设定功率(3)*

我想输入: Ball2.setName('blue')。setSize(2)。setPower(3)


我的问题是,如何在类中链接这些方法?

如果要在每个函数的末尾返回ball(在示例Ball2中)对象,它将起作用。您可以通过在每个函数的末尾调用“returnthis”来实现这一点

您可以查看wikipedia java示例,了解它们是如何实现的:

setName(name){this.name=name;}
就足够了,不需要`setBall.setName(name){this.name=name;}`它不是Javascript,而是Typescript,所以你没有原型。您是否尝试在每个方法的末尾返回此值?谢谢,在每个方法的末尾添加“return this”,并删除“setBall”。在开始时,我的方法是否链接。@MJohnston我可以问一下这是否是一种有效的设计模式吗?我喜欢有可链接方法的类,只是想这样做,但是如果我有一个存储大量数据的对象,那么这样做会不会导致不必要的内存使用?如果复制,那么每次方法都会返回自身?或者该对象只是作为引用返回,因此不会导致额外的内存使用?
class Ball {
  constructor(name, size, power) {
    this.name = name;
    this.size = size;
    this.power = power;
  }   
}

let Ball1 = new Ball('Bomb',5,2);
console.log(Ball1);

class setBall extends Ball{
  constructor(name, size, power) {
    super(name, size, power);
  }

  setBall.setName(name) {
    this.name = name;
  }

  setBall.setSize(size) {
    this.size = size;
  }

  setBall.setPower(power) {
    this.power = power;
  }

  get getthrowSpeed() {
    return this.size + this.power;
  }
}

let Ball2 = new setBall('Big',3,7);
console.log(Ball2);