Если загруженный скрипт назначен свойству window
, например, с шаблоном модуля, например так:
window.NiftyThing = (function() {
function doSomething() { ... }
return {
doSomething: doSomething
};
})();
или
window.NiftyThing = {
doSomething: function() { ... }
};
или
NiftyThing = {
doSomething: function() { ... }
};
Затем вы можете удалить свойство, которое ссылается на него:
delete window.NiftyThing;
... который удаляет хотя бы одну основную ссылку на него; если есть другие ссылки на него, он может не очиститься.
Если использовалось ключевое слово var
:
var NiftyThing = {
doSomething: function() { ... }
};
... тогда это не свойство, и вы не можете использовать delete
, поэтому установка undefined
или null
прервет ссылку:
NiftyThing = undefined;
Вы можете хеджировать свои ставки:
NiftyThing = undefined;
try { delete NiftyThing; } catch (e) { }
Во всех случаях это зависит от реализации JavaScript, чтобы определить, что нет неоплаченных внешних ссылок на загруженный скрипт и выполнить очистку, но, по крайней мере, вы даете ему возможность.
Если, как говорит Гуффа, загруженный скрипт не использует шаблон модуля, вам необходимо применить эти правила ко всем его символам. Что является еще одной причиной, почему шаблон модуля является хорошей вещью (tm). ; -)