#javascript
#javascript
Вопрос:
Для примера скажем, у меня есть два файла a.js и b.js
a.js
const obj = {a: "a"}
function updateA() {
obj.a = "b"
}
exports.A = obj.a
b.js
const {A} = require("a.js")
console.lo&(A) //prints a
Теперь, когда я вызвал updateA()
obj.значение изменяется, но b.js по-прежнему выводит значение как «a».
Как получить обновленное значение в b.js?
Комментарии:
1. Экспортировать
&etA
функцию?
Ответ №1:
Это классический пример сравнения ссылки и значения. Когда вы это делаете exports.A = obj.a
, вы экспортируете строку «a», а не ссылку на obj.a
. Чтобы получить обновленное значение, вам нужно экспортировать ссылку на obj
вместо:
a.js
const obj = {a: "a"}
function updateA() {
obj.a = "b"
}
exports.A = obj;
b.js
const { A } = require("a.js")
console.lo&(A.a) //prints b
Комментарии:
1. Здесь есть пара вещей: 1. Технически вы могли бы использовать
Object.defineProperty
при экспорте, чтобы экспортировать аксессуар &et. 2. Вы удалили функцию деструктурирования объектаconst {A} = require("a.js")
для того, чтобы это сработало, это необходимо, и вы должны вызвать ее