Переопределить значение ссылки на объект

Когда вы передаете ссылку на объект в качестве аргумента функции, назначение этой ссылки просто меняет значение ссылки, но не ее значение, например:

class meh {
    constructor() {
        this.obj = { member: 7 };
    }

    doSomething() {
        doFn(this.obj);
    }
    doFn(objRef) {
        objRef = { newMember: 4 } // Doesn't overwrite obj; merely assigns a new object to objRef.
    }
}

Но есть ли способ перезаписать или иным образом присвоить значение фактическому местоположению, указанному ссылкой на объект? Имеется в виду, есть ли способ назначить новый объект objRefdoFn) и отразить это в obj?

1 ответ

Это немного зависит от вашей ситуации.

В качестве примера в качестве реагирования вы можете хранить переменные в состоянии, в котором есть встроенная функция для обновления, которая называется this.setState, однако если вы работаете в чистом JavaScript, вы можете создать собственное хранилище глобальных переменных и затем обновите их напрямую. Я не советую этого делать, но в качестве примера вы можете сохранить переменные в окне ['somevariable'], чтобы сохранить их в объекте окна, к ним позже можно будет получить доступ.

Чтобы сделать его еще более привлекательным, вы можете создать готовые функции, которые будут выполнять ту работу, которую вы можете просто вызывать, передавая параметр переменной и значение, которое нужно обновить как объект, и вы имитировали характеристики состояния React.

Redux, чтобы привести другой пример, имеет продуманную работу с централизованным "хранилищем", куда вы отправляете и извлекаете данные, проверьте это.

Я надеюсь, что это отвечает на ваш вопрос.

Другие вопросы по тегам