ES6 中对象数组的设置器
Setters for object arrays in 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); }
}
我不需要对数组中的值进行任何特殊处理,所以我没有写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; }
但是none上面的工作。我只是想像往常一样通过 this.objects[2] = foobar; 设置数组中的值。我如何告诉 ES6?
您应该将对象 属性 和原型的 getter 命名为不同的名称,否则构造函数将尝试找到对应于原型的 setter (class ) getter 当它 this.objects = ...
.
class Test {
constructor() {
this.objects = [];
}
get positiveObjects() { this.objects.filter(o => o.foobar >= 0); }
}
注意:您的构造方法命名错误。应该是 constructor
,而不是 construct
。与此同时,你更正了它。
您不能在 getter 中的对象中写入对象。它可能会导致最大调用。
我建议你这样写。
class Test {
construct() {
this.objects = [];
}
get legalobjects() {
return this.objects.filter(o => o.foobar >= 0);
}
}
您可以通过哪种方式设置对象
我有一个 class,其中包含一个用于包含特定类型对象的数组。
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; }
但是none上面的工作。我只是想像往常一样通过 this.objects[2] = foobar; 设置数组中的值。我如何告诉 ES6?
您应该将对象 属性 和原型的 getter 命名为不同的名称,否则构造函数将尝试找到对应于原型的 setter (class ) getter 当它 this.objects = ...
.
class Test {
constructor() {
this.objects = [];
}
get positiveObjects() { this.objects.filter(o => o.foobar >= 0); }
}
注意:您的构造方法命名错误。应该是 constructor
,而不是 construct
。与此同时,你更正了它。
您不能在 getter 中的对象中写入对象。它可能会导致最大调用。 我建议你这样写。
class Test {
construct() {
this.objects = [];
}
get legalobjects() {
return this.objects.filter(o => o.foobar >= 0);
}
}
您可以通过哪种方式设置对象