我的目标是在 Javascript 中创建一个对象,我可以轻松地去block.red = 128;
或block.red += 5
. 这可以很容易地this.red
在对象内部完成,但我希望我的对象也能够做到,这让我感到困惑的是确保红色值落在可接受的范围内(即不高于 255 且不低于 0)。
我环顾四周,我认为可能有用的一件事是封装。那么问题是我不能使用复合赋值运算符。显然这不是世界末日,但我想知道是否有任何我没有想到的解决方案。
function colours(r, g, b) {
_r = r;
_g = g;
_b = b;
this.red = red;
function red(value) {
if (value == undefined) {
return _r;
} else {
if (value < 0) {
_r = 0;
} else if (value > 255) {
_r = 255;
} else {
_r = value;
}
}
}
}
// tests
colours(240, 120, 60);
alert(red());
red(120);
alert(red());
red(360);
alert(red());
// works up to here
red() -= 30;
alert(red());
那么您对我如何在保持红色值保持在范围内的同时保留复合赋值运算符有任何想法吗?