Сообщение от kefi
|
НО ПОЧЕМУ ?????????????????
|
Funarg, етить его... Функция "запоминает" [[Scope]] (все вышестоящие VO) в момент создания,
один раз и навсегда. Дальше уже не имеет значения, куда эту функцию засовывают. Отсюда, если при создании функции 'd', её статичный [[Scope]] - это VO(b)->VO(global), то это уже не изменится, единственное, что динамично - это создание собственного VO(d), что происходит в любой функции
с каждым вызовом.
Когда вы отправляете функцию 'd' в качестве аргумента, то у функции 'b' создаётся собственный новый VO(b), но 'd' это не волнует, т.к. неё другой VO(b), созданный ранее при первом вызове. Соответственно, свойство 'c' одного объекта не имеет никакого отношения к свойству 'c' другого объекта...