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」が表示されます。

実行結果
実行結果

ロックしない場合の結果

実行結果
実行結果