JavaScript オブジェクトの変更を禁止する
JavaScriptでは、オブジェクトにプロパティやメソッドを簡単に追加できます。また、プロパティの値も自由に変更することができます。ただし、この手軽さが問題を引き起こすことがあります。そこで、オブジェクトが不用意に変更されないようにするには、「freeze()」メソッドを使います。パラメータには、内容を変更したくないオブジェクトを指定します。なお、「freeze()」メソッドの戻り値も処理したオブジェクトになります。
<body>
<script>
window.addEventListener("load" , function(){
var ele = document.getElementsByTagName("output")[0];
//オブジェクトを作成
var myObj = {
type : "N"
};
myObj.type = "R"; //オブジェクトのプロパティをRに変更
Object.freeze(myObj); //オブジェクトをロック
myObj.type = "X"; //オブジェクトのプロパティをXに変更
myObj.year = 1999; //オブジェクトにプロパティを追加
//内容表示
ele.innerHTML = "種類は" + myObj.type + "/" + myObj.year+"です";
}, false);
</script>
<output></output>
</body>
freeze()メソッドによってロックされているため、変更前のプロパティの値と「undefined」が表示されます。
ロックしない場合の結果