удалить переменную из памяти
на сайте с помощью ajax загружаются остальные страницы.
Соответственно js код тоже новый подгружается. Проблема в том что когда модули заменяются друг на друга, то js переменные висят в памяти от старого модуля. Как сделать что бы их как буд-то и не было ? удалить полностью, функции, переменные и т.п. весь js код загруженный ранее на странице. |
Удаляем обьекты в java script при помощи delete
// создадим переменную var hello=100; // проверим доступ к переменной, должно быть всё нормуль. alert (hello); // удаляем переменную delete hello; // эта строка выдаст ошибку, потому что переменную hello мы удалили alert (hello); Практично обьединить весь код страницы в один обьект к примеру page, чтобы удалить его разом. Можно обойтись и без удаления, просто перезаписать старый обьект page, обьектом page из новой страницы. также есть такая клёвая штука как конструкторы и деструкторы, пусть к примеру у каждой страницы будет конструктор и деструктор. Конструктор будет запускать плагины, подгружать данные, инициализировать переменный, вешать обработчики событий. А деструктор наоборот вырубать плагины, отвязывать обработчики событий, удалять глобальные обьекты (глобальные обьекты это зло !!!!!!), и тд. Открывается страница запускается конструктор, покидаешь запускается деструктор. Естественно обьеденять и удалять всё надо самому, некакой волшебный метод за тебя эту работу делать не будет. Уборщик мусора не в счёт, он удаляет обьекты на который никто не ссылается. Если обьект пользователю нафиг не нужен, но он к примеру в глобальной области видимости, то уборщик его никогда не тронет. |
Цитата:
|
DjDiablo, ff8, ничего не удалилось))
|
Главное что delete удалит лишние св-ва из обьектов, а лучше тупо перезаписать весь обьект, и хранить всё в нём а не в глобальной области видимости.
Да и кто сказал что нельзя удалить переменную из глобальной области ? Все глобальные обьекты, это лишь св-ва обьекта window. Значит достаточно выпилить св-во c именем переменной из обьекта window. Запускается теперь в фрейме, для чистоты эксперимента. <script> // создадим переменную hello=100; // проверим доступ к переменной, должно быть всё нормуль. alert (hello); // удаляем переменную delete window["hello"]; // эта строка выдаст ошибку, потому что переменную hello мы удалили alert (hello); </script> |
Цитата:
А вообще смысл топика не ясен. В JS есть сборщик мусора, он сам собирает ненужные переменные. Если на объект где-то осталась ссылка, значит он ещё нужен. |
// создаем константу .
const TEXT = "Here is a simple text"; // объявляем константу TEXT . document.write(TEXT); // Ну и наконец удаляем его . delete const TEXT; // решил поделится :) |
Skalean,
Вот это поворот:) |
Часовой пояс GMT +3, время: 09:49. |