Стал тут выдирать из кодов всякие вкусные фрагменты и формировать из них некую либу.
По мере формирования оной пришел к выводу, что все-таки мне нужны классы и ООП.
По сути - думал, что надо new my_class() и в каждой инстанции будут храниться свои переменные данные и т.п.
Но попробовал все-таки сделать через функции. Упрощенно это выглядит так:

Код AS1/AS2:
function initACCU( VAL ){
var ACCUTotal = VAL
function getACCU(){ return ACCUTotal }
return { getAccu:Function = getACCU }
}
var AC1:Object = initACCU( 100 )
var AC2:Object = initACCU( 200 )
trace( AC1.getAccu() ) // 100
trace( AC2.getAccu() ) // 200
То есть все работает так, как и планировалось. Два вызова одной и той же функции имеют свои разные локальные переменные. Классы не понадобились. Я в замешательстве. В двух словах мне может кто-то объяснить - как и почему оно работает? Отработавшая функция создает какой-то инстанс?