JavaScript文档声明,为了向现有对象添加属性,您可以执行以下操作。
data["property"] = value;
或
data.property = value;
就我而言,我试图在添加之前将我的模型ID(由服务器接收)转换为字符串,例如:
data.model[id.toString()] = false;
但是我收到以下错误:
Uncaught TypeError: Cannot set property '1' of undefined
我最初认为这是因为你不能使用字母数字字符串或某种奇怪的限制,所以我尝试在我的ID前加上一个字母,例如:
var id = 'k' + id.toString();
仍然无法运作!但是,当我使用Chrome的控制台面板并手动执行此操作时,例如:
var data = {};
var data['1'] = false;
这有效,所以我做错了什么?
data.['key'] = value;
操作的官方名称是什么?这有助于了解何时向Google寻求帮助。
更新1 :好的,似乎可能是由于以下原因:
var data = localStorage.getItem('model.state');
当我将其更改为:
var data = {};
它突然开始起作用了!
更新2 :我看到我做错了什么(但仍然不确定为什么它给了我一个未定义的错误......任何人?)。
我做了以下事情:
var data = localStorage.getItem('model.state');
if (data) data = JSON.parse(data);
它开始按预期工作。对此感到抱歉...感谢大家的帮助!
答案 0 :(得分:7)
您收到此错误,因为未定义data.model
。为了防止抛出错误,您可以使用:
data.model = data.model || {};
data.model[id.toString()] = false;
这是以下的简短版本:
if (!data.model) {
data.model = {};
}
data.model[id.toString()] = false;