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