繁体   English   中英

ES6中对象数组的设置器

[英]Setters for object arrays in ES6

我有一个包含一个数组的类,该数组用于包含某种类型的对象。

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; }

但以上工作均无效。 我只是希望能够像往常一样通过this.objects [2] = foobar;在数组中设置值。 我该如何告诉ES6?

您不能在getter中的对象中写入对象。 这可能会导致通话量最大化。 我建议你用这种方式写。

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

您可以通过哪种方式设置所需的对象

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM