我有一个类,其中包含一个用于包含特定类型对象的数组。
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?
答案 0 :(得分:3)
您无法在getter中的对象中写入对象。它可能会导致最大呼叫。 我建议你这样写。
class Test {
construct() {
this.objects = [];
}
get legalobjects() {
return this.objects.filter(o => o.foobar >= 0);
}
}
您可以根据需要设置对象
答案 1 :(得分:2)
您应该以不同的方式命名对象属性和原型的getter,否则构造函数将尝试在this.objects = ...
时找到与原型(类的)getter对应的setter。
class Test {
constructor() {
this.objects = [];
}
get positiveObjects() { this.objects.filter(o => o.foobar >= 0); }
}
注意:您的构造函数方法名称错误。它应该是constructor
,而不是construct
。同时你纠正了它。