我遇到这种情况,我试图保存“聊天记录”,而人们在我的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]
(至少我认为这是怎么做的)
对这些主题的任何帮助都会很棒!
答案 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'}};
你明白了,不推荐这个。