JavaScript プロパティやオブジェクトを削除する

最終更新日

オブジェクトを削除するには「null」を代入します。プロパティを削除するには「delete」演算子を使います。ただし、「delete」演算子でどんなプロパティでも削除できるわけではありません。自身が持つプロパティのみ削除でき、プロトタイプチェーンをたどって返されたプロパティは削除できません。また、delete演算子ではvar宣言した変数を削除することはできません。

<body>
<script>
    window.addEventListener("load" , function(){
        var ele = document.getElementsByTagName("output");
        //オブジェクトを作成
        var myObj = { x:1, y:2, z:99};
        //内容表示
        for(var i in myObj){ele[0].innerHTML += i + " = " + myObj[i]+"<br>";}
        
        delete myObj.z; //zプロパティだけ削除
        for(var i in myObj){ele[1].innerHTML += i + " = " + myObj[i]+"<br>";}
        
        myObj = null;   //オブジェクト削除
        for(var i in myObj){ele[2].innerHTML += i + " = " + myObj[i]+"<br>";}

        //オブジェクトを新たに作成
        var tempObj = function(){ this.zz = 123; };
        tempObj.prototype.z = 3;
        var myObj = new tempObj();
        //内容表示
        for(var i in myObj){ele[3].innerHTML += i + " = " + myObj[i]+"<br>";}
        //z,zzプロパティを削除。自分自身のプロパティであるzzしか削除できない
        delete myObj.z;
        delete myObj.zz;
        for(var i in myObj){ele[4].innerHTML += i + " = " + myObj[i]+"<br>";}

    }, false);
</script>
    <output></output><hr>
    <output></output><hr>
    <output></output><hr>
    <output></output><hr>
    <output></output><hr>
</body>

作成したオブジェクトの内容と削除後の内容が表示されます。削除されたオブジェクトの内容は表示されません。

実行結果
実行結果