Переопределить значение ссылки на объект
Когда вы передаете ссылку на объект в качестве аргумента функции, назначение этой ссылки просто меняет значение ссылки, но не ее значение, например:
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.
}
}
Но есть ли способ перезаписать или иным образом присвоить значение фактическому местоположению, указанному ссылкой на объект? Имеется в виду, есть ли способ назначить новый объект objRef
(в doFn
) и отразить это в obj
?
1 ответ
Это немного зависит от вашей ситуации.
В качестве примера в качестве реагирования вы можете хранить переменные в состоянии, в котором есть встроенная функция для обновления, которая называется this.setState, однако если вы работаете в чистом JavaScript, вы можете создать собственное хранилище глобальных переменных и затем обновите их напрямую. Я не советую этого делать, но в качестве примера вы можете сохранить переменные в окне ['somevariable'], чтобы сохранить их в объекте окна, к ним позже можно будет получить доступ.
Чтобы сделать его еще более привлекательным, вы можете создать готовые функции, которые будут выполнять ту работу, которую вы можете просто вызывать, передавая параметр переменной и значение, которое нужно обновить как объект, и вы имитировали характеристики состояния React.
Redux, чтобы привести другой пример, имеет продуманную работу с централизованным "хранилищем", куда вы отправляете и извлекаете данные, проверьте это.
Я надеюсь, что это отвечает на ваш вопрос.