JavaScript オブジェクトの変更・拡張などが可能か調べる

最終更新日

多くのブラウザに搭載されている新しいJavaScriptでは、不用意にオブジェクトの拡張を禁止する機能があります。オブジェクトが拡張可能かどうかは、「isExtensibleプロパティ」で確認することができます。「true」なら拡張可能で、「false」なら拡張不可です。同様に、オブジェクトにプロパティを追加・削除、及び、値の変更が可能かどうかは、「isFrozen」プロパティで確認することができます。「true」なら追加、及び、値の変更が可能「false」なら不可です。また、プロパティの追加・削除が可能かどうかは「isSealed」プロパティで確認することができます。「true」なら追加が可能、「false」なら不可です。なお、オブジェクトの拡張が禁止されている場合にはプロパティを追加しても、例外エラーなどは発生しません。

<body>
<script>
    window.addEventListener("load" , function(){
        var ele = document.getElementsByTagName("output")[0];
        //オブジェクトを作成
        var myObj = {
            name : "TOMTO"
        };
        ele.innerHTML = "isExtensible :" + Object.isExtensible(myObj)+"<br>"
        ele.innerHTML += "isFrozen :" + Object.isFrozen(myObj)+"<br>"
        ele.innerHTML += "isSealed :" + Object.isSealed(myObj)+"<hr>"
        //オブジェクトをロック
        Object.freeze(myObj);
        ele.innerHTML += "isExtensible :" + Object.isExtensible(myObj)+"<br>"
        ele.innerHTML += "isFrozen :" + Object.isFrozen(myObj)+"<br>"
        ele.innerHTML += "isSealed :" + Object.isSealed(myObj)+"<hr>"
    }, false);
</script>
    <output></output>
</body>