1. ホーム
  2. javascript

[解決済み] JavaScriptのオブジェクトを素早くクリアするには?

2022-04-21 20:15:16

質問

JavaScriptの配列では、1回の代入で空の状態にリセットすることができます。

array.length = 0;

これは、Arrayを空にして再利用できるようにするもので、私の理解する限りでは、1回の操作で済みます。

JSオブジェクトをクリアする同じような方法はないのでしょうか?フィールドを繰り返し削除できることは知っています。

for (var prop in obj) { if (obj.hasOwnProperty(prop)) { delete obj[prop]; } }

が、これには線形的な複雑さがあります。

また、オブジェクトを捨てて新しいものを作ることもできるんだ。

obj = {};

しかし、新しいオブジェクトを乱発すると、IE6ではガベージコレクションの問題が発生します。( ここに書かれているように )

解決方法は?

あなたの質問に対する短い答えは、「いいえ」だと思います(新しいオブジェクトを作成すればいいのです)。

  1. この例では、長さを0に設定しても、ガベージコレクションのためにすべての要素を残すことができると思います。

  2. 頻繁に使うものであれば、Object.prototypeに追加してもいいかもしれませんね。確かに複雑さはリニアですが、後でガベージコレクションを行わないものはそうなります。

  3. これが一番の解決策です。ご質問とは関係ないのですが、いつまでIE6のサポートを続ける必要があるのでしょうか?使用中止のキャンペーンも多く行われています。

上記で間違っていることがあれば、遠慮なく訂正してください。