我有以下代码,但不起作用。
var conversations = { };
conversations['5634576'].name = 'frank';
显然我无法在对象内创建对象。我想使用会话对象来存储对象数组,以便使用localStorage保存客户端消息的历史记录,以节省空间服务器端。
但显然,我甚至无法在对象内部创建变量,除非它们已经存在,如下所示:
var conversations = { 123: { name: 'test' } };
conversations[123].name = "frank";
但是,由于我不知道将要使用的ID,我不知道如何解决这个问题。
有什么想法吗?
答案 0 :(得分:3)
你需要这样做:
// 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'
}
}
<强>更新强>
您可以使用in
if('5634576' in conversations) {
// Exist
}
答案 1 :(得分:0)
在您的代码中,您无法将变量添加到索引“5634576”,因为它仍然不存在。
var conversations = { };
conversations['5634576'].name = 'frank';
你需要创建它,然后分配可用的
var conversations = { };
conversations['5634576'] = {};
conversations.name = 'frank';
答案 2 :(得分:0)
也许是最短的方式:
var conversations = {};
(conversations['5634576'] = {}).name = 'frank';
答案 3 :(得分:0)
// build this how you were
conversations = {};
// if conversations[12345] is defined, use it:
// else set it to an object with the desired properties/methods
conversations["12345"] = conversations["12345"] || { name : "Frank", messages : [] };
conversations["12345"].messages.push(new_msg);
我假设你将在一个函数,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 : {} };
};