Javascript ES6中对象数组的setter

Javascript ES6中对象数组的setter,javascript,setter,es6-class,Javascript,Setter,Es6 Class,我有一个类,它包含一个数组,用于包含特定类型的对象 class Test { constructor() { this.objects = []; } # Only objects with positive foobars should be returned get objects() { return this.objects.filter(o => o.foobar >= 0); } } 我不需要对数组中的值进行任何特殊处理,因

我有一个类,它包含一个数组,用于包含特定类型的对象

class Test {
    constructor() {
      this.objects = [];
    }

    # Only objects with positive foobars should be returned
    get objects() { return this.objects.filter(o => o.foobar >= 0); }
}
我不需要对数组中的值进行任何特殊处理,因此我没有编写set方法。但是现在我得到一个错误,说我不能写入只有getter方法的属性。因此,我尝试重建默认setter方法,如下所示:

set objects(k,v) { this.objects[k] = v; }
set objects[k](v) { this.objects[k] = v; }
set objects(v) { this.objects = v; }

但以上这些都不起作用。我只是希望能够像往常一样通过这个来设置数组中的值。objects[2]=foobar;如何告诉ES6这一点?

您应该以不同的方式命名对象属性和原型的getter,否则构造函数将在执行
this.objects=…
时尝试查找与原型(类)getter对应的setter

class Test {
    constructor() {
      this.objects = [];
    }

    get positiveObjects() { this.objects.filter(o => o.foobar >= 0); }
}

注意:您的构造函数方法命名错误。它应该是
constructor
,而不是
construct
。同时,您也对其进行了更正。

您应该以不同的方式命名对象属性和原型的getter,否则构造函数将在执行
this.objects=…
时尝试查找与原型(类)getter对应的setter

class Test {
    constructor() {
      this.objects = [];
    }

    get positiveObjects() { this.objects.filter(o => o.foobar >= 0); }
}

注意:您的构造函数方法命名错误。它应该是
constructor
,而不是
construct
。同时,您还更正了它。

您不能在getter中的objects中写入对象。它可能会导致最大呼叫数。 我建议你这样写

class Test {
  construct() {
    this.objects = [];
  }
  get legalobjects() { 
    return this.objects.filter(o => o.foobar >= 0);
  }
}

通过这种方式,您可以根据需要设置对象

您不能在getter中的objects中写入对象。它可能会导致最大呼叫数。 我建议你这样写

class Test {
  construct() {
    this.objects = [];
  }
  get legalobjects() { 
    return this.objects.filter(o => o.foobar >= 0);
  }
}

通过这种方式,您可以根据需要设置对象

set objects(…){…}
oops,对不起,这是帖子中的一个输入错误。。。错误仍然存在:-(您还需要在getter中使用
return
语句…对于所有的拼写错误,我的原始代码要复杂得多,所以我从头开始编写了这个示例,没有对其进行测试…
set objects(…){…}
oops,对不起,这是帖子中的一个拼写错误…错误仍然存在:-(您还需要在getter中使用
return
语句……抱歉,所有的输入错误,我的原始代码要复杂得多,所以我从头开始编写了这个示例,没有对其进行测试……好的,谢谢,我没有想到对getter和setter使用与原始属性名称不同的名称。这在Ruby中是不同的……请注意在构造函数中指定的in属性不是setter。setter可以用
set
关键字定义,很像
get
,但它将用于用新数组完全替换当前数组。有许多其他方法可以处理此问题,例如通过。好的,谢谢,我没有想到为数组使用不同的名称getter和setter与原始属性名不同。这在Ruby中是不同的…请注意,您在构造函数中指定的普通属性不是setter。setter可以使用
set
关键字定义,与
get
非常类似,但它将用于用新数组完全替换当前数组。还有许多其他方法例如,通过。