私はJavaScriptのdelete
演算子と少し混乱しています。次のコードを見てください。
var obj = {
helloText: "Hello World!"
};
var foo = obj;
delete obj;
このコードが実行された後、obj
isですがnull
、foo
それでもとまったく同じようにオブジェクトを参照しますobj
。このオブジェクトは、foo
指し示したオブジェクトと同じだと思います。
これは私を混乱させます。なぜなら、書き込みdelete obj
でobj
は、変数だけでなく、メモリ内を指しているオブジェクトも削除されると思っていたからですobj
。
JavaScriptののガベージコレクタは、私がオブジェクトを指し、他の変数を持っていなかった場合は、それがそうすることを、保持/解放的に取り組んでいるためですでしょうメモリから削除されますか?
(ちなみに、私のテストはSafari 4で行われました。)
var obj = { helloText: "Hello World!" }; var foo = obj; delete obj;
チェックオブジェクトが削除されていませんobj
:削除、使用delete obj.helloText
して、チェックfoo now foo is an empty object
delete
はJavaScriptでオブジェクトを削除するためのものではありません。delete
オブジェクトキーを削除するために使用されます。この場合var obj = { helloText: "Hello World!" }; var foo = obj; delete obj;
、オブジェクトは削除されません。チェックしてくださいobj
。次に実行するdelete obj.helloText
とfoo
、空をポイントしていることがわかりますオブジェクト "" "