Вопрос по javascript – Значение свойства javascript зависит от другого свойства

0

Я сделал объект с именем Fullscreen, а внутри объекта другой объект, названный направлениями. поэтому мой код выглядит так:

FullScreen = {
  directions: {
    prev: -1,
    next: 1
  }
}

но я хочу иметь возможность установить FullScreen.directions.prev извне объекта и изменить FullScreen.directions.next на отрицательное значение пред. есть идеи как это сделать?

Просто присвойте значения свойствам. Посмотри наMDN - Working with Objects узнать основы об объектах. Felix Kling
И в чем проблема с этим? VisioN

Ваш Ответ

3   ответа
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);

Вы можете стать еще интереснее, используяспециальныйget/set syntax:

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
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Olmo Kramer
Error: User Rate Limit Exceeded Olmo Kramer
0

get а такжеset функции наdirections объект.

В идеале у вас будет отдельная переменная, которая содержит фактическое значение, и каждый раз, когда выset одно из свойств, вы меняете эту переменную, но каждый раз, когда выget Вы получаете значение, рассчитанное по этой переменной.

0

var directions = {
    current: 0,
    prev: function () {
        return -current;
    },
    next: function () {
        return current;
    }
};

И тогда вы можете взаимодействовать с ним и изменить свойdirections.current вместо любого изnext или жеprev ценности.

Похожие вопросы