Я был читал о ES-модулях и экспериментировал и наткнулся на случай, который я не мог объяснить:
// settings.js
export const FOO = 42;
export const BAR= 5;
// main1.js
import * as settings from './settings';
settings.FOO = 1;
//main2.js
import {FOO, BAR} from './settings'
FOO = 1;
В main1.js
я могу переопределить значение const
через переменную settings
, но в main2.js
я не могу (как и ожидалось).
Вопрос (теоретический) заключается в том, почему в первом случае можно переопределить значение const
? Создает ли "просмотр только для чтения" просто создает свойства на обычном объекте и разбивает исходную структуру?
Практический вопрос будет самым эффективным способом возврата коллекции констант (или свойств только для чтения) из модуля? Я имел в виду следующее:
// settings.js
export default Object.freeze({
FOO: 42,
BAR: 5
});
Любые мысли?
EDIT: Я использую Babel.