Object.defineProperty(window, 'CONSTANT_NAME', {value: CONSTANT_VALUE});
// usage
console.log(CONSTANT_NAME);
Object.defineProperty()
создает свойство со следующими атрибутами по умолчанию:
configurable
true тогда и только тогда, когда тип этого дескриптора свойства может быть изменен и если свойство может быть удалено из соответствующего объекта.
По умолчанию установлено значение false.
enumerable
Значение true, если и только если это свойство отображается при перечислении свойств соответствующего объекта. По умолчанию установлено значение false.
writable
true тогда и только тогда, когда значение, связанное со свойством, можно изменить с помощью оператора присваивания. По умолчанию false.
если «константа» - это объект, вы можете дополнительно сделать его неизменным, заморозив его. obj =
Object.freeze(obj)
. имейте в виду, что дочерние объекты-свойства автоматически не замораживаются.