Более сложный случай

Более сложный случай

Хотя это только базовый шаблон, для более сложных ситуаций может оказаться нелегко выяснить первопричину утечки. Распространенной практикой по написанию объектно-ориентированного JScript является расширение DOM-элементов путем инкапсуляции их внутри JScript-объекта. В процессе создания такого объекта в большинстве случаев получается ссылка на желаемый DOM-элемент, а затем она сохраняется в только что созданном объекте, при этом экземпляр этого объекта оказывается прикрепленным к DOM-элементу. Таким способом модель приложения всегда получает доступ ко всему что нужно. Проблема заключается в том, что это явная циклическая ссылка, но из-за использования других аспектов языка она может остаться незамеченной. Устранение шаблонов такого рода может быть весьма затруднительным, но вы вполне можете использовать простые методы, обсужденные ранее.

<script type="text/javascript">

function Encapsulator(element)

{

// Создаем элемент

this.elementReference = element;

// Создаем циклическую ссылку

element.expandoProperty = this;

}

function SetupLeak()

{

// Утечка: все в одном

new Encapsulator(document.getElementById("LeakedDiv"));

}

function BreakLeak()

{

document.getElementById("LeakedDiv").expandoProperty = null;

}

window.onload = SetupLeak;

window.onunload = BreakLeak;

</script>

<div id="LeakedDiv"></div>

Более комплексным решением заявленной проблемы может стать создание процесса регистрации ссылок, чтобы соответствующим образом уведомлять приложение, какие из них могут быть удалены. В этом случае по закрытию документа нужно будет пройтись по всем таким элементам и убрать с них ссылки. Однако при неверном подходе можно не только не уменьшить, а даже увеличить количество циклических ссылок, не избавляясь от заявленной проблемы.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Классический случай обмана

Из книги Искусство обмана автора Митник Кевин

Классический случай обмана Какая самая большая угроза безопасности ваших деловых активов? Ответ прост – это социальный инженер – нечестный фокусник, который заставляет вас смотреть на его левую руку, пока правой ворует ваши секреты. Этот персонаж часто так дружелюбен и


Случай с центром назначения линий

Из книги Волшебный котел автора Реймонд Эрик Стивен

Случай с центром назначения линий Хотите узнать чей-нибудь неопубликованный номер телефона? Социальный инженер может сообщить вам полдюжины способов (некоторые из них вы найдете в других историях книги), но, возможно, самым простым из них будет обычный телефонный звонок,


7.2. Случай с Cisco: разделение риска

Из книги Домашний компьютер № 7 (121) 2006 автора Журнал «Домашний компьютер»

7.2. Случай с Cisco: разделение риска Несколько лет назад двум программистам в Cisco (изготовитель сетевого оборудования) была поручена работа по написанию распределенной системы управления печатью для использования в корпоративной сети Cisco. Это было настоящим вызовом. Помимо


На всякий случай Автор: Сергей Костенок.

Из книги Как найти высокооплачиваемую работу с помощью Internet автора Рудинштейн Марк

На всякий случай Автор: Сергей Костенок. © 2004, Издательский дом | http://www.computerra.ru/Журнал «Домашний компьютер» | http://dk.compulenta.ru/Этот материал Вы всегда сможете найти по его постоянному адресу: /2006/121/280053/Компьютер хорош тем, что всегда готов выполнить вашу рутинную работу, но без


Особый случай

Из книги Разгони свой сайт автора Мациевский Николай


Сложный rollover-эффект

Из книги Феномен науки. Кибернетический подход к эволюции автора Турчин Валентин Фёдорович

Сложный rollover-эффект Под таким термином стоит понимать те случаи, когда в одном файле содержится несколько «динамических кнопок». Например, это может быть такое изображение: Рис. 4.2. Пример фонового изображения для сложного rollover-эффекта. Источник:


1.10. Сложный рефлекс

Из книги Интернет. Новые возможности. Трюки и эффекты [litres] автора Баловсяк Надежда Васильевна


Сложный поиск в Google

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

Сложный поиск в Google Сложный поиск предусматривает возможность использования особенностей языка поисковых запросов. Он является уникальным по своему синтаксису для каждой поисковой системы, но его возможности схожи.Вот наиболее популярные задачи, которые можно решить


10.2.2. Более сложный маршалинг

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов. автора Дронов Владимир

10.2.2. Более сложный маршалинг Иногда мы хотим настроить маршалинг под свои нужды. Такую возможность дают методы _load и _dump. Они вызываются во время выполнения маршалинга, чтобы вы могли самостоятельно реализовать преобразование данных в строку и обратно.В следующем примере


Более сложный Web-сценарий

Из книги Технология XSLT автора Валиков Алексей Николаевич

Более сложный Web-сценарий Теперь сделаем что-нибудь посложнее — заставим пункты списков, формирующих полосу навигации на Web-странице index.htm, менять цвет рамки при наведении на них курсора мыши. Так мы дадим посетителю понять, что данные элементы Web-страницы могут


Случай нескольких входящих документов

Из книги OrCAD PSpice. Анализ электрических цепей автора Кеоун Дж.

Случай нескольких входящих документов Базовая архитектура преобразования подразумевает один входящий документ. Несмотря на это, в преобразованиях можно использовать и обрабатывать информацию, хранящуюся в других, внешних документах. Доступ к этим документам можно


Анализ на наихудший случай

Из книги Искусство программирования на языке сценариев командной оболочки автора Купер Мендель

Анализ на наихудший случай При предыдущем моделировании мы выполнили анализ по методу Монте- Карло, установив в окне условия в Monte Carlo/Worst Case. То же самое окно может использоваться для анализа на наихудший случай при выборе Worst Case/Sensitivity. Выходная переменная по-прежнему V(RL:1),


Укрытия на экстренный случай

Из книги Выжить в цифровом мире. Иллюстрированные советы от «Лаборатории Касперского» автора Дьяков Михаил

Укрытия на экстренный случай Иногда вам нужно срочно создать убежище, чтобы переждать ночь. Можно выкопать углубление в горе и быстро превратить его в укрытие. Ещё можно вырыть яму глубиной в три блока и поместить над собой блоки грязи. Используя специальную технику


Совет 13: Сложный пароль

Из книги автора

Совет 13: Сложный пароль Хакеры начинают подбор пароля с проверки по специальным словарям, в которых содержатся миллионы паролей, когда-то где-то использованных. Так что все пароли, которые сходу придут вам в голову, скорее всего, в этих словарях уже есть — среди миллионов