Если у меня есть следующий код JavaScript:
<script id="someJS">
var boom = 'boom';
function example(){
alert(boom);
}
</script>
а затем выполните:
$('#someJS').remove();
Я все еще могу вызвать example()
, хотя эта функция JavaScript больше не находится в DOM... Как ее удалить?
Я не хочу обнулять фактические функции и переменные с помощью: boom = null; example = null;
, поскольку я не всегда знаю, что находится внутри файла JavaScript. Например, имена функций, переменные и т.д. Мне нужно уметь исключить энтузиазм того, что было внутри этого тега script.
Обновление: для тех, кто хотел узнать случай пользователя для этого:
В основном в приложении, над которым я работаю, у нас есть пользовательский JavaScript для определенных клиентов, который при нажатии кнопки, например. save, а затем проверяет, существуют ли определенные функции, а затем запускает их. Однако, поскольку эта кнопка сохранения является общей, это означает, что пользовательский код вызывается все время после его добавления, даже если оно больше не актуально.
Решение, с которым мы столкнулись (кто-то опубликовал это как ответ, но по какой-то причине он удалил), должен был обозначать все это как:
DynamicJS = {
boom: 'boom',
example: function(message) {
alert(message);
}
}
И тогда мы можем просто сделать: delete DyanmicJS
;
Что удаляет все функции и переменные внутри этого пространства имен из глобальной области действия, эффективно вставляя то, что добавил файл script.
Хотя я уверен, что это не идеальное решение, как если бы у вас были прослушиватели событий внутри файла, я уверен, что они все равно будут существовать!