JavaScript では、delete 演算子を使用してオブジェクトの属性を削除できます。そのオペランドは属性アクセス式である必要があります (例: "var obj={x:1};delete obj.x;")。 。 delete 演算子は、継承された属性ではなく、自由な属性のみを削除できます。
このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。
delete 演算子はオブジェクトのプロパティを削除できます。そのオペランドはプロパティ アクセス式である必要があります。驚くべきことは、削除はホスト オブジェクトから属性を切断するだけで、属性内の属性を操作しないことです。
delete book.author; //book不再有属性author delete book["main title"] //book不会再有属性"main title"
削除演算子は、継承された属性ではなく、自由な属性のみを削除できます (継承されたプロパティの削除は必須です)これは、それが定義されているプロトタイプ オブジェクトからそれを削除する必要があり、これはこのプロトタイプから継承するすべてのオブジェクトに影響します)。
注:
a={p:{x:1}}; b=a.p; delete a.p;
このコードを実行しても、b.x の値は 1 のままです。削除されたプロパティへの参照がまだ存在するため、JavaScript の一部の実装ではこの緩いコードが原因でメモリ リークが発生する可能性があります。したがって、オブジェクトを破棄する場合は、属性内の属性をたどって 1 つずつ削除する必要があります。
削除式が正常に削除された場合、または副作用 (存在しない属性の削除など) がなかった場合、true を返します。 delete がプロパティ アクセス式でない場合、delete も true を返します。
o = {x:1}; delete o.x; //删除x,返回true。 delete o.x; //什么都没做(x已经不存在了),返回true delete o.toString; //什么也没做(toString是继承来的),返回true delete 1; //无意义,返回true
delete は、構成可能性が false のプロパティを削除できません (ただし、拡張不可能なオブジェクトの構成可能なプロパティは削除できます)。変数宣言や関数宣言を通じて作成されたグローバル オブジェクトのプロパティなど、組み込みオブジェクトの一部のプロパティは構成できません。厳密モードでは、構成不可能なプロパティを削除すると型エラーが発生します。非厳密モードでは、次の場合に削除演算子は false を返します:
delete Object.prototype; //不能删除,属性是不可配置的 var x = 1; delete this.x; //不能删除这个全局变量, function f(){} delete this.f; //同样也不能删除全局函数
非厳密モードでグローバル オブジェクトの構成可能プロパティとプロパティを削除する場合、グローバル オブジェクトを省略できます。 delete 演算子の後に、削除する属性の名前を直接指定します:
this.x = 1; //创建一个可配置的全局属性(没有用var) delete x; //将它删除
ただし、厳密モードでは、delete の後に不正なオペランド (x など) が続くと、レポートが報告されます。構文エラーのため、指定されたオブジェクトとそのプロパティを表示する必要があります:
delete x; //在严格模式下报语法错误 delete this.x; //正常工作
[推奨学習: javascript 上級チュートリアル ]
以上がJavaScriptでオブジェクトの属性を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。