Вариант 1:
Есть статик класс:

Код AS3:
public class Profile
{
public function Profile(){
}
public static function setVar(name:String, value:*):void
{
var sharedObject:SharedObject = SharedObject.getLocal(Constant.SHARED_OBJECT_NAME);
sharedObject.data[name] = value;
sharedObject.flush();
}
public static function getVar(name:String):*
{
var sharedObject:SharedObject = SharedObject.getLocal(Constant.SHARED_OBJECT_NAME);
return sharedObject.data[name];
}
public static function clear():void
{
var sharedObject:SharedObject = SharedObject.getLocal(Constant.SHARED_OBJECT_NAME);
sharedObject.clear();
}
…
}
Как видно getLocal() вызывается в каждой статической функции. Что, наверное тратит лишние производительные ресурсы.
Вариант 2: можно сделать статическую переменную static var sharedObject:SharedObject;
и один раз получить куки, а далее использовать ее во всех статик функциях.

Код AS3:
public static function init(name:String, value:*):void
{
sharedObject:SharedObject = SharedObject.getLocal(Constant.SHARED_OBJECT_NAME);
}
Но при этом обязательно сначала надо будет вызвать init, а только потом уже остальные функции.
Вариант 3: при объявлении статической переменной, сразу же ее инициализировать

Код AS3:
public class Profile
{
sharedObject:SharedObject = SharedObject.getLocal(Constant.SHARED_OBJECT_NAME);
public function Profile(){
}
...
}
Какой вариант правильнее всего выбрать?