ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript_javascript ヒントの delete 演算子で削除できないオブジェクトの解析
ES3 では、次のように削除が 8.6.2.5 と 11.4.1 で導入されます
情報があります、
1. 実装内の削除オペレーターは、エンジン内で [[Delete]] メソッドを呼び出します
2. [[削除]] は 8.6.2
で定義されています。3. 削除された属性に DontDelete 機能がある場合、
を削除するときに直接 false が返されます。「DontDelete」を検索すると、次のどれも削除できません
が見つかります。1、オブジェクト (10.1.6) の引数オブジェクトをアクティブ化します
コードをコピー
値が false の場合、上記 9 点は ES5 では [[Configurable]] が false として記述されています。
ES5 の新しい Object.defineProperty メソッドは、次のように定義されたオブジェクトの Configurable を表示できます
さらに、ES5 厳密モードでは、構成可能値が false のオブジェクトを削除すると、例外が直接スローされます。たとえば、
削除できない組み込みオブジェクトの一部のメソッドまたはプロパティに加えて、削除できないカスタム オブジェクトもあります。たとえば、プロトタイプから継承したプロパティは削除できません。
2. オブジェクトがプロトタイプから継承するプロパティとメソッドは削除できません
その理由も非常に単純です、1. 組み込みオブジェクトのほとんどのプロパティとメソッドは、言語のコア API を保護するために削除できません。これらの API は、削除されると基本的に役に立ちません。 Object.prototype の削除など。
2. オブジェクトがプロトタイプから継承する属性とメソッドは、プロトタイプを保護するために削除できません。そうでない場合、「クラス A のオブジェクトがプロトタイプの属性を削除すると、A から継承されたすべてのオブジェクトはその属性を失います。」 。」