Здесь onClick
имеет закрытие, которое сохраняет ссылку на element
. Присваивая onClick
element.click
, создается круг: element
-> onClick
-> element
-> onClick
...
function addClickHandler(element) {
element.click = function onClick(e) {
alert("Clicked the " + element.nodeName)
}
}
В некоторых (большинство? Конечно, не всех ) движках javascript сборщик мусора не будет собирать объект, который имеет хотя бы одну ссылку на него. Даже если из DOM будет удален element
, круговая самоссылка, указанная выше, не позволит собрать element
и onClick
, что приведет к утечке памяти.