对象编辑的javascript对象
我有下面的代码,它不工作对象编辑的javascript对象,javascript,object,Javascript,Object,我有下面的代码,它不工作 var conversations = { }; conversations['5634576'].name = 'frank'; 显然,我不能在对象内部创建对象。我想使用conversation对象存储对象数组,用localStorage保存客户端消息的历史记录,以节省服务器端的空间 但是很明显,我甚至不能在对象内部创建变量,除非它们已经存在,比如: var conversations = { 123: { name: 'test' } }; conversatio
var conversations = { };
conversations['5634576'].name = 'frank';
显然,我不能在对象内部创建对象。我想使用conversation对象存储对象数组,用localStorage保存客户端消息的历史记录,以节省服务器端的空间
但是很明显,我甚至不能在对象内部创建变量,除非它们已经存在,比如:
var conversations = { 123: { name: 'test' } };
conversations[123].name = "frank";
// Create an object
var conversations = {};
// Add a blank object to the object if doesn't already exist
if (!conversations.hasOwnProperty('5634576')) {
conversations['5634576'] = {};
}
// Add data to the child object
conversations['5634576'].name = 'frank';
conversations{
'5634576': {
name : 'frank'
}
}
但是,由于我不知道将使用的ID,我不知道如何解决这个问题
有什么想法吗?你需要这样做:
var conversations = { 123: { name: 'test' } };
conversations[123].name = "frank";
// Create an object
var conversations = {};
// Add a blank object to the object if doesn't already exist
if (!conversations.hasOwnProperty('5634576')) {
conversations['5634576'] = {};
}
// Add data to the child object
conversations['5634576'].name = 'frank';
conversations{
'5634576': {
name : 'frank'
}
}
对象将如下所示:
var conversations = { 123: { name: 'test' } };
conversations[123].name = "frank";
// Create an object
var conversations = {};
// Add a blank object to the object if doesn't already exist
if (!conversations.hasOwnProperty('5634576')) {
conversations['5634576'] = {};
}
// Add data to the child object
conversations['5634576'].name = 'frank';
conversations{
'5634576': {
name : 'frank'
}
}
更新
您可以在
if('5634576' in conversations) {
// Exist
}
在代码中,无法将变量添加到索引“5634576”,因为它尚未存在
var conversations = { };
conversations['5634576'].name = 'frank';
您需要创建它,然后分配valriable
var conversations = { };
conversations['5634576'] = {};
conversations.name = 'frank';
也许是最短的途径:
var conversations = {};
(conversations['5634576'] = {}).name = 'frank';
我假设您将在一个函数中执行此操作,XHR或其他
conversations.add_message = function (msg) {
var id = msg.conversation_id;
conversations[id] = conversations[id] ||
conversations.new_conversation(msg.user_name); // returning a conversation object
conversations[id].messages.push(msg);
};
conversations.new_conversation = function (name) {
return { name : name, messages : [], etc : {} };
};
var-conversations={};对话['5634576']={};对话['5634576']。姓名='frank'如果(!conversations.hasOwnProperty('5634576')){/*..*/}
多麻烦啊,您可以使用检查第二步是否必要。。。。好吧,谢谢你!或var对话={};对话['5634576']={name:'frank'}
。“真烦人。”:好吧,你期待什么?您正试图访问不存在的属性“5634576”的值。请阅读。但是,当用户收到一条新消息时,对象被重新创建,因此重写它。使用字符串示例,您无法看到它,但是,假设它是一个数组:这将是一个问题。@john:如果它不存在,只初始化对象/数组/无论什么。数组呢?如果我像这样实例化数组->conversations['5634576'].messages=[];会话['5634576'].messages.push(消息)代码>我将丢失以前的消息。我能阻止吗?conversations['5634576']=conversations['5634576']|{;对话['5634576'].消息=对话['5634576'].消息| |[]
@john:只做对话['5634576']代码>当消息
尚未退出时。显然,当您分配一个新值时,您将丢失任何以前的值。@johnsmith如果您执行推送
,则不会丢失以前的消息。