假设我有一个带有一些任意值的对象...
let object = {
value: 5,
min: 1,
max: 100,
valid: true
}
如果valid
属性不在范围内,如何使value
属性自动更新?我知道我可以在这样的对象中制作一个getter
...
get valid() {
if (this.value > this.max || this.value < this.min) {
return false
else {
return true
}
}
...但是这只会在访问{strong>时更新valid
。我需要valid
始终根据对象的其他值保持最新。< / p>
通常我最终意识到我对问题的整个思考方式是错误的。这是其中一种吗?例如,我知道如果我使用setter
函数来更新所有其他三个对象,则可以使用它们来使valid
保持最新,但这似乎是错误的方法。
我该怎么办?
答案 0 :(得分:0)
这是我可以想到的没有吸气剂的唯一方法。
每当其他属性更新时,它都会更新valid
的值。
var obj = {
val: 5,
minimum: 1,
maximum: 100,
valid: true,
set value(v) {
this.val = v;
this.updateValid();
},
set min(m) {
this.minimum = m;
this.updateValid();
},
set max(m) {
this.maximum = m;
this.updateValid();
},
updateValid : function() {
this.valid = (this.val >= this.minimum && this.val <= this.maximum)
}
}
obj.value = -1;
console.log(obj);