Показать сообщение отдельно
  #14 (permalink)  
Старый 21.12.2011, 14:40
Кандидат Javascript-наук
Отправить личное сообщение для Иваннн Посмотреть профиль Найти все сообщения от Иваннн
 
Регистрация: 31.05.2010
Сообщений: 106

Сообщение от Livanderiaamarum Посмотреть сообщение
вот это я и не понял вначале, я подумал что за бред? где это можно использовать? это же запарывает функцию q()
На сколько я понимаю q -это всего лишь ссылка на объект функции. При новом присваивании значения ссылке q ссылка просто начинает указывать на другой объект (на
function(){ return w();}

)
a объект на который ссылалась ссылка до изменения удалился бы, если бы не было вызвано замыкание (из глобального пространства есть ссылка на объект функции, "задекларированный" в виде выражения в другой функции ), а так как замыкание есть, то объект висит в памяти, и единственный способ к нему добраться, т.е к его области видимости - только через новую q.
Как я понимаю операцию можно разделить на две части. Не обязательно изменять саму ссылку q, можно внутренний объект функции привязать к любой переменной (т.е. ссылке, допустим у) видимой в глобальном объекте, а потом q=null или delete q, и работать с у.
Ответить с цитированием