[解決済み] JavaScriptでオブジェクトを削除する
2022-03-27 10:18:46
質問
JavaScriptの
delete
演算子を使用します。次のようなコード片を例にとります。
var obj = {
helloText: "Hello World!"
};
var foo = obj;
delete obj;
このコード片が実行された後
obj
は
null
しかし
foo
と同じようにオブジェクトを参照します。
obj
. このオブジェクトは
foo
を指した。
というのは、私は
delete obj
はそのオブジェクトを削除し
obj
が指していたのは、メモリ上の変数だけではありません。
obj
.
これは、JavaScriptのガベージコレクタがretain/releaseベースで動作しているため、もし他にオブジェクトを指す変数がなかったら となる はメモリから削除されるのでしょうか?
(ちなみに、私のテストはSafari 4で行いました)。
解決方法は?
delete演算子は参照のみを削除し、オブジェクトそのものを削除することはありません。もしオブジェクト自体を削除してしまうと、C++のdeleteのように、残った他の参照がぶら下がったままになってしまいます。(そして、そのうちのひとつにアクセスするとクラッシュしてしまうのです。それらをすべてnullにすることは、削除時に余分な作業をさせるか、各オブジェクトに余分なメモリを持たせることを意味します)。
Javascriptはガベージコレクションを行うので、オブジェクト自体を削除する必要はありません。
オブジェクトの使用を終えたら、そのオブジェクトへの参照を削除すると便利なことがあります。大きなオブジェクトへの参照が残っていると、たとえプログラムの残りの部分が実際にそのオブジェクトを使用していなくても、回収されなくなる可能性があります。
関連
-
JavaScriptにおけるマクロタスクとミクロタスクの詳細
-
Vueの一般的な組み込みディレクティブの説明
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み] JavaScriptのオブジェクトにキーが存在するかどうかをチェックする?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
HTML+CSS+JavaScriptで簡単な三目並べゲームを作成する。
-
jQueryのコピーオブジェクトの説明
-
Vueのクラススタイルの使い方の詳細
-
[解決済み】Node.jsで "Cannot find module "エラーを解決するには?
-
[解決済み】TypeError: Router.use() はミドルウェアの関数を要求しているが、Object を取得した。
-
[解決済み】 `string.split is not a function` というエラーの原因は何ですか?
-
[解決済み】エラー。Ionic使用中にモジュール '../lib/utils/unsupported.js' が見つかりませんでした。
-
Uncaught TypeError: null のプロパティ 'offsetHeight' を読み取れませんでした。
-
JavaScriptのgetElementById、getElementsByTagNam、getElementsByClassNameの違いと使い方
-
JavaScriptのgetElementById()メソッド入門