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