は、だから私は、コードのこの部分を発見し、それは明らかに動作します:自己破砕Javascript機能 - どのように機能するのですか? (それは年間の生産であったように)
知りたいwindow[someMethod] = function (tmp) {
callback({prop:"val"}, tmp);
// Garbage collect
window[someMethod] = undefined;
try {
delete window[someMethod];
}
catch (e) { }
if (head) {
head.removeChild(script);
}
// head refers to DOM head elem and script refers to some script file elem
};
、それがどのように動作しますか?
- それはどのように
delete
自体にその本体内undefined
とtry
に自分自身を設定することができますか? - 呼び出しが完了するまで、ブラウザは
undefined
とdelete
を実行しないことを知っていますか?そしてどうやって? - ブラウザがすぐに削除すると、その後何が起こりますか?最後の行は走っていますか?
- 最後に、この漏れたメモリが見えますか?はいの場合、どうですか?
コールバック関数がどこかの 'tmp'への参照を保持していても、なぜメモリリークが起こるのかわかりません。 –
あなたはおそらく正しいでしょう。 – yan
これは非常に役に立ちます。私は今日これを掲示する前にbrainfartを持っていたように感じる! – Mrchief