Flex Динамическое имя объекта и добавить объект к объекту? - PullRequest
0 голосов
/ 17 июня 2011

У меня возникла ситуация, когда я пытаюсь сохранить «логи чата», пока люди переключаются между представлениями в моем мобильном мобильном приложении.

Итак, мой план - начать с основного объекта, который я планирую повторно использовать в качестве основного объекта журнала чата. Я называю это textObj

поэтому, когда кто-то новый хочет пообщаться в чате, я планирую создать новый объект с именами пользователей

так как, если бы я мог получить имя пользователя из чего-то вроде data.username, как я мог бы перевести это в имя var объекта, который я хочу создать? В итоге я получаю

var uniqueUsername:Object = new Object();

так что я могу со временем сделать что-то вроде

uniqueUsername.chatLog="Sample text log";

РЕДАКТИРОВАТЬ: я думаю, я не был понятен, я буквально не имею в виду уникальное имя пользователя в качестве имени пользователя ....

скажем data.username был равен AwesomeDudeYeah

а я хотел сделать

var AwesomeDudeYeah:Object = new Object();

Я не могу просто сделать

var data.username:Object = new Object();

так, как я мог заставить это работать?

Я хочу сделать имя пользователя так, как я обращаюсь к журналам чата внутри textObj

Тогда как мне добавить это к тексту obj obj?

Так что я получаю textObj.uniqueUsername.chatLog="Sample text log";

, на который я мог бы сослаться, выполнив textObj[uniqueUsername][chatLog]

(по крайней мере я так думаю)

Будет полезна любая помощь по этим темам!

Ответы [ 2 ]

2 голосов
/ 17 июня 2011

обозначение в скобках

var textObj:object = new Object();
textObj[uniqueUsername].chatLog = "Sample text log";


//accessed by
textObj[uniqueUsername].chatLog

, если uniqueUsername не существует в textObj, тогда вы получите ошибки, поэтому убедитесь, что вы их обрабатываете

    textObj[uniqueUsername] //basically if this is undefioned or null

//then when you do 
 textObj[uniqueUsername].chatLog // is trying to find chatLog on a null/undefined object

Боги ошибок поразят вас

[EDIT] После прочтения ваших комментариев с Jax, я думаю, вам следует немного переработать его и сделать его более читабельным

var aUsers:Array = new Array( );

var oUser:Object = new Objbect();
    oUser.name = uniqueUsername;
    oUser.chatLog = "Sample text log";

aUsers.push( oUser );

Лично я бы создал пользовательский класс и содержал в нем пользовательские данные.

1 голос
/ 17 июня 2011

Во-первых, позвольте мне упомянуть, что использование нетипизированного объекта не очень хорошая идея.По сути, вы создаете «суп данных», который трудно кодировать, отлаживать, возможно, создаст нулевые исключения во время выполнения и снизит эффективность вашей разработки.Вы должны использовать типизированные классы для создания своих объектов (создать класс User со свойством log и name и т. Д.).

Однако ответ на ваш вопрос:

var textObj:Object = {}; // if not instanciated already
textObj.uniqueUsername = {chatLog:'Sample Text Log'};

// Or you can do it all in one line
var textObj:Object = {uniqueUsername:{chatLog:'Sample Text Log'}};

Вы получаетеидея, однако, не рекомендуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...