JavaScript プロパティの追加を禁止する

最終更新日

JavaScriptでは、オブジェクトへのプロパティの追加を禁止するには、「preventExtensions()」メソッドを使います。パラメータには、プロパティを追加したくないオブジェクトを指定します。freeze()メソッドはオブジェクト自体の変更を禁止しますが、これは不便なときもあります。プロパティの内容や削除は自由に行いたい場合は、preventExtensions()メソッドを使用します。

<body>
<script>
    window.addEventListener("load" , function(){
        var ele = document.getElementsByTagName("output")[0];
        //オブジェクトを作成
        var myObj = {
            type : "N",
            code:"bug"
        };

        myObj.year = 1999;                  //オブジェクトにプロパティを追加
        Object.preventExtensions(myObj);    //オブジェクトプロパティの追加を禁止
        myObj.maker = "irem";               //オブジェクトのプロパティを追加
        myObj.type = "R";                   //オブジェクトのプロパティをRに変更
        delete myObj.code;                  //オブジェクトのcodeプロパティを削除

        for(var i in myObj){
            ele.innerHTML += i + " = " + myObj[i]+"<br>"
        }
    }, false);
</script>
    <output></output>
</body>

preventExtensions()メソッドによってオブジェクトへのプロパティ追加が禁止されているため、「maker」プロパティは表示されません。

実行結果
実行結果

preventExtensions()を実行しない場合

実行結果
実行結果