var obj = {
foo: 'bar'
};
delete obj.foo;
はobj
オブジェクトにペアキー/値foo
/'bar'
を削除します。つまり、オブジェクトにコンテンツ'bar'
への参照を解放します(つまり、ある時点でガベージコレクションされます)。
また、私は書くことができます:
delete obj;
それは次のように行くシーンの背後にあるよう:obj
への参照せずwindow
を残し
delete window.obj;
。
私は、this
キーワードがJSでどのように機能するのか完全にはわかりませんが、メソッド実行にバインドされたオブジェクトだと私は考えています。
しかし、私はそれを書くために理にかなっているかわからない:
delete this;
- どのオブジェクトから参照が削除されていますか?
return this;
に電話するとどうなりますか?null
?
特に私はnew
で構築されたオブジェクトを破壊しようとしている:
function MyClass() = {
return this;
};
MyClass.prototype.destroy = function() {
delete this;
};
var myInstance = new MyClass();
myInstance.destroy();
がmyInstance
本当に削除していますか?すべてのメモリが解放されていますか?
おかげ
なぜそれをやろうとしますか?どのような問題を解決しようとしていますか?ガベージコレクタは、自動的に* 99%のケースで動作します – smnbbrv
このコードはコンパイルされません。 –
@DanLoweコンパイルしませんか?何? –