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

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

Хотя это только базовый шаблон, для более сложных ситуаций может оказаться нелегко выяснить первопричину утечки. Распространенной практикой по написанию объектно-ориентированного 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>

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

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

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

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

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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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