对象编辑的javascript对象

时间:2013-02-23 17:49:56

标签: javascript object

我有以下代码,但不起作用。

var conversations = { };
conversations['5634576'].name = 'frank';

显然我无法在对象内创建对象。我想使用会话对象来存储对象数组,以便使用localStorage保存客户端消息的历史记录,以节省空间服务器端。

但显然,我甚至无法在对象内部创建变量,除非它们已经存在,如下所示:

var conversations = { 123: { name: 'test' } };
conversations[123].name = "frank";

但是,由于我不知道将要使用的ID,我不知道如何解决这个问题。

有什么想法吗?

4 个答案:

答案 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 : {} };
};
相关问题