JavaScriptでオブジェクトの定数を使う場合はObject.freezeでより安全に

JavaScriptで定数を定義するときに、オブジェクトにするとまとまりを表現できます。

例えば、状態を表す定数がいくつかある場合に、STATUSというオブジェクトを定義するケースは以下です。

const STATUS = {
	START: 1,
  END: 2,
  CANCEL: 3
};

しかし、JavaScriptでは、例えばconstで宣言したとしても、オブジェクトのプロパティは上書きできてしまいます。

console.log(STATUS.START); //1
STATUS.START = 999; //誰かが間違って上書きした
console.log(STATUS.START); //999

このような間違いを防止するために、Object.freezeは役に立ちます。

const STATUS = Object.freeze({
	START: 1,
  END: 2,
  CANCEL: 3
});

console.log(STATUS.START); //1
STATUS.START = 999;
console.log(STATUS.START); //freezeしてあるので1のまま