[英]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.