Установить значение в объекте с динамическим значением

1

Во-первых, вот мой код:

var lastUsedId = '';
var object = {
    element: lastElement()
};

function lastElement() {
    return lastUsedId;
}

lastUsedId = 123;

console.log(object); // returns '{element: ""}' and should '{element: 123}'

Как вы можете видеть, я определил объект с ключевым element который должен содержать последний использованный идентификатор элемента. Проблема в том, что я не знаю, что ID еще не пришло, чтобы напечатать результат. Я не могу изменить значение, подобное object.element = 123 из-за моего надежного приложения, поэтому не отправляйте такие комментарии. Для этого вопроса он должен быть структурирован таким образом.

Мой вопрос: могу ли я установить значение как функцию, которая возвращает переменную с последующим изменением содержимого? Может быть, это глупый вопрос, но когда это невозможно, просто скажите это, и я попытаюсь найти другой путь.

  • 0
    Возможно, вам нужно проверить обновленное значение. То, что выполняет lastElement и создает новый object с обновленным значением.
Теги:
object

2 ответа

3
Лучший ответ

Не уверен, что это то, что вы хотите, но вы можете использовать getter для этого:

var lastUsedId = '';
var object = {
    get element() {
      return lastElement()
    }
};

function lastElement() {
    return lastUsedId;
}

lastUsedId = 123;
console.log(object);

lastUsedId = 456;
console.log(object);
  • 0
    Ухоженная! Спасибо, это то, что я хотел.
  • 0
    Добро пожаловать :) рад помочь!
2

могу ли я установить значение как функцию, которая возвращает переменную с последующим изменением содержимого?

Почему бы не сохранить значение только как function

var obj = {
    element: lastElement
};
console.log( obj.element() ); //this will invoke the method to get the latest value
  • 1
    Это то, что я тоже хотел порекомендовать, но @ gurvinder372 победил меня.
  • 0
    Я отправляю эту переменную object внешнему плагину, который ожидает строку, поэтому он использует как obj.element без вызова.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню