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
非常类似,但它将用于用新数组完全替换当前数组。还有许多其他方法例如,通过。