概要
javascriptでの、オブジェクトのプロパティの削除についてです。
これまでにもこのブログで出てきましたが、オブジェクトのプロパティを削除するには、delete演算子を使います。
前回のオブジェクト生成の例をもとにdelete演算子の挙動をみてみます。
//新規でオブジェクトを生成する
var test = {a:1, b:2}
//.で読み出す
console.log(test.a);
//[]で読み出す
console.log(test["a"]);
//delete演算子を使って、プロパティ「a」を削除する
delete test.a;
//delete演算子を使って、プロパティ「b」を削除する
delete test[b];
上記の場合、前者の削除の方法は.を使ってプロパティを指定しています。
後者の削除の方法は[]を使ってプロパティを指定しています。
どちらも同じ同様の動きになります。
注意する点としては、継承されたオブジェクトの継承プロパティは削除されないことです。
delete演算子はプロパティの削除が成功した場合にtrueを返します。
delete演算子は、再定義可の属性がfalseになっているプロパティは削除しないです。
また、注意しなければならないのは、use strictモードの場合と非use strictモードの場合で、挙動が異なる点です。
use strictモードでは再定義不可のプロパティを削除するとtype error例外が発生します。
非use strictモードでは同様の削除をするとfalseを返します。