proxy = new Proxy({}, {
deleteProperty(target, propKey){
console.log(arguments);
return true;
}
});
proxy.xx = 3;
delete proxy.xx; // log and return true
proxy.xx // 3
コードと同様に、削除操作は効果がありません。
MDNで削除演算子を読みました。
delete 演算子は、オブジェクトから特定のプロパティを削除します。削除が成功すると true が返され、それ以外の場合は false が返されます。ただし、次のシナリオを考慮することが重要です。
削除しようとしているプロパティが存在しない場合、delete は効果がなく、true を返します。
オブジェクトのプロトタイプ チェーンに同じ名前のプロパティが存在する場合、削除後、オブジェクトはプロトタイプ チェーンのプロパティを使用します (つまり、削除は自身のプロパティにのみ影響します)。
var で宣言されたプロパティは、グローバル スコープまたは関数のスコープから削除できません。
そのため、delete はグローバル スコープ内の関数を削除できません (これが関数定義または関数式の一部であるかどうかに関係なく)。
オブジェクトの一部である関数 (グローバル スコープを除く) は、delete で削除できます。
let または const で宣言されたプロパティは、それらが定義されたスコープから削除できません。
構成不可能なプロパティは削除できません。これには、Math、Array、Object などの組み込みオブジェクトのプロパティと、Object.defineProperty() などのメソッドで構成不可能として作成されるプロパティが含まれます。
私のコードは上記のものに属していないと思うので、どう説明すればいいですか? ありがとう。