为什么可以't我使用作为值存储在另一个对象中的对象键
Why can't I use object keys which are stored as values in another object?
我正在做一个chrome扩展,其中两个js文件是-
- 常量.js
- main.js
在constants.js中,我定义了一个对象-
var infoPostJsonParamNames = {"pid" : "PID",
"title" : "title_value",
"price" : "price",
};
在main.js中,我使用infoPostJsonParamNames中的值作为其他对象的键,比如-
dataI = new Object();
dataI.infoPostJsonParamNames["title"] = "Title value";
dataI.infoPostJsonParamNames["cost"] = 12.34;
这样做的原因是,我必须在代码的许多地方使用相同的键名称(例如在POST请求中),即PID、title_value和price,但它在未来可能会更改,例如,title_vvalue可以变成title_v。因此,我试图避免在多个地方更改它们,只在一个地方更改,即在对象infoPostJsonParamNames
中。
但这样做会给我一个错误:
TypeError: Cannot set property 'title' of undefined
您要做的是动态设置属性名称。您必须使用括号访问;下面的例子应该说明这一点。
dataI = new Object(); // or {} for style points;
var titlePropertyName = infoPostJsonParamNames.title;
dataI[titlePropertyName] = "Title value";
您的代码以前所做的是在dataI
对象中查找一个名为infoPostJsonParamNames
的属性。该属性不存在,因此在尝试访问名为title
的子属性时出错。
您错过了dataI
范围内的infoPostJsonParamNames
初始化。
dataI = {};
dataI.infoPostJsonParamNames = {};
dataI.infoPostJsonParamNames["title"] = "Title value";
dataI.infoPostJsonParamNames["cost"] = 12.34;
顺便说一下,你也可以这样做:
dataI = {
infoPostJsonParamNames: {
title: = "TitleValue",
cost: 12.34
}
}
相关文章:
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 对一个对象使用reduce可以返回一个没有't在数组中包含目标字母
- 在Javascript数组或一个对象中存储多个数据所需的Tweak
- 将引用一个对象存储到Mongoose和MeanJS中
- 如何存储一个对象数组,这些对象是 ajax 查询从 javascript 中的 JSON 中提取数据的结果
- AngularJS是否在$error.maxlength对象中存储一个值
- 基于另一个对象键/值存储对象值
- 如何通过名称在另一个对象上调用存储在一个对象中的函数
- 自动创建Javascript对象并将其存储在另一个对象中
- 分析一个文件的内容并用JavaScript存储在一个对象中
- 为什么可以't我使用作为值存储在另一个对象中的对象键
- 从构造函数创建一个匿名函数对象,并将其存储在另一个对象中
- 从本地存储javascript的对象数组中删除一个对象
- 用indexedDB存储一个three.js网格对象
- 在chrome.storage中存储一个复杂对象
- 将Raphael对象存储在另一个对象中以供以后操作
- 如何调用存储在对象中的函数,该对象被用作另一个函数的参数
- 动态地在另一个对象中存储Javascript对象
- Javascript:一个对象如何存储对另一个对象的引用's方法,并将其称为“s”;“远程”;