Flex动态对象名称,并将对象添加到对象?

时间:2011-06-16 20:57:32

标签: flash flex actionscript-3 object

我遇到这种情况,我试图保存“聊天记录”,而人们在我的flex移动应用程序中切换视图。

所以,我的计划是我开始使用一个主要对象,我计划将其重新用作主要的聊天记录对象。我称之为textObj

所以,当有新人想要聊天时,我的计划就是使用个人用户名

创建一个新对象

那么如果我从data.username这样的用户名获取用户名怎么能把它转换成我想要的对象的var名称呢?所以最后我最终得到了

var uniqueUsername:Object = new Object();

所以我最终可以做一些像

这样的事情
uniqueUsername.chatLog="Sample text log";
编辑:我想我不清楚我不认为uniqueUsername是用户名......

data.username等于AwesomeDudeYeah

我想做

var AwesomeDudeYeah:Object = new Object();

我不能这样做

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

那我怎么能做到这一点?

我想让用户名如何引用textObj

中的聊天记录

然后我将如何将其添加到textObj obj?

所以我最终得到textObj.uniqueUsername.chatLog="Sample text log";

我可以通过textObj[uniqueUsername][chatLog]

来引用

(至少我认为这是怎么做的)

对这些主题的任何帮助都会很棒!

2 个答案:

答案 0 :(得分:2)

括号表示法

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


//accessed by
textObj[uniqueUsername].chatLog

如果textObj中不存在uniqueUsername,那么您将收到错误,因此请务必处理它们

    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

错误之神将击倒你

[编辑] 在用Jax阅读你的评论之后,我认为你应该稍微改写一下并使其更具可读性

var aUsers:Array = new Array( );

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

aUsers.push( oUser );

就个人而言,我会创建一个用户类并保存用户数据。

答案 1 :(得分:1)

首先,让我提一下使用无类型对象并不是一个好主意。你实际上是在制作“数据汤”,这很难编码,调试,可能会在运行时创建空异常,并会降低开发效率。您应该使用类型化的类来创建对象(创建一个带有日志和名称属性的User类等)。

然而,问题的答案是:

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'}};

你明白了,不推荐这个。