我创建了一个名为Fullscreen的对象,并在对象内另一个名为directions的对象。所以我的代码看起来像这样:
FullScreen = {
directions: {
prev: -1,
next: 1
}
}
但我希望能够从对象外部设置FullScreen.directions.prev,并将FullScreen.directions.next更改为prev的负值。任何想法如何做到这一点?
答案 0 :(得分:3)
如果我正确理解了这个问题,就像这样简单:
FullScreen.directions.prev = -42;
FullScreen.directions.next = -FullScreen.directions.prev;
然而,将此逻辑封装在函数中可能会更好:
FullScreen = {
directions: {
prev: -1,
next: 1,
setPrev: function (value) {
value = +value; // coerce to number
this.prev = value;
this.next = -value;
}
}
}
// then
FullScreen.direction.setPrev(-42);
,你可以变得更加漂亮
FullScreen = {
directions: {
_prev: -1,
_next: 1,
get prev() {
return this._prev;
},
set prev(value) {
value = +value; // coerce to number
this._prev = value;
this._next = -value;
},
get next() {
return this._next;
}
}
}
// then
FullScreen.direction.prev = -42;
// invokes the setter function behind the scenes, so that _next is also set
答案 1 :(得分:0)
要自动完成此操作,您需要在get
对象上使用set
和directions
函数。
理想情况下,您将拥有一个包含实际值的单独变量,每次set
其中一个属性时,您都会更改该变量,但每次get
检索计算出的值时从那个变量。
答案 2 :(得分:0)
您可以这样做:
var directions = {
current: 0,
prev: function () {
return -current;
},
next: function () {
return current;
}
};
然后,您可以与其互动并修改directions.current
,而不是next
或prev
值。