如何在Javascript中创建新的对象元素?
我正在努力理解我做错了什么 我有一个空对象:如何在Javascript中创建新的对象元素?,javascript,jquery,object,element,Javascript,Jquery,Object,Element,我正在努力理解我做错了什么 我有一个空对象: if ( doc._attachments === undefined ){ doc._attachments = {}; } var attmtid = 123; 我正在尝试这样填充: doc._attachments[attmtid].revpos = "abc"; 但是,我不断从Firebug得到一个未定义的错误: doc._attachments[attmtid] is undefined 我真的搞不懂 问题: 有人能告诉我我做
if ( doc._attachments === undefined ){
doc._attachments = {};
}
var attmtid = 123;
我正在尝试这样填充:
doc._attachments[attmtid].revpos = "abc";
但是,我不断从Firebug得到一个未定义的错误:
doc._attachments[attmtid] is undefined
我真的搞不懂
问题:有人能告诉我我做错了什么吗 谢谢 为什么不:
doc._attachments[attmtid] = {
revpos: "abc"
};
doc.\u附件[attmtid]
未定义,这意味着您需要将其定义为某种东西。数组、对象、字符串等。例如,您可以将其设为另一个对象:
doc._attachments[attmtid] = {};
然后可以设置该对象的属性:
doc._attachments[attmtid].revpos = "abc";
doc.\u附件[attmtid]
未初始化为对象,因此无法动态分配revpos属性
这应该解决它:
doc._attachments[attmtid] = {};
doc._attachments[attmtid].revpos = "abc";
注意:这是基于您希望使用
doc.\u attachments.123
属性(这是问题中的示例代码将创建的)而不是doc.\u attachments.attmid
属性的期望。我明白了。谢谢你的提示!好啊我得到了它。我想我需要同时定义\u doc.attachments
和\u doc.attachments[123]
,这很有意义,因为我需要跟踪单个文档的不同附件。@在初始化之前,您可能希望执行相同的未定义的检查\u doc.attachments[attmtid]
,这样您就不会覆盖其他属性了。@frequency-yes,您知道了。不能在未定义的对象上到处设置属性。例如:varx={};x、 y.z=1代码>不起作用。可能要先检查文档附件[attmtid]
是否未定义
-仅当它是时,然后用{}
初始化它。然后始终设置revpos
属性。