2

我很难理解我在这里做错了什么。

我有一个空对象:

if ( doc._attachments === undefined ){
    doc._attachments = {};
}
var attmtid = 123;

我试图这样填充:

doc._attachments[attmtid].revpos = "abc";

但是我不断收到来自 Firebug 的未定义错误:

doc._attachments[attmtid] is undefined

并且无法真正理解它。

问题:
有人可以告诉我我做错了什么吗?

谢谢!

4

3 回答 3

6

为什么不这样做:

doc._attachments[attmtid] = {
    revpos: "abc"
};
于 2012-12-11T16:27:56.437 回答
5

doc._attachments[attmtid]是未定义的,这意味着您需要将其定义为某物。一个数组、一个对象、一个字符串等。例如,您可以将其设为另一个对象:

doc._attachments[attmtid] = {};

然后能够在该对象上设置属性:

doc._attachments[attmtid].revpos = "abc";
于 2012-12-11T16:28:48.247 回答
2

doc._attachments[attmtid]未初始化为对象,因此您无法动态分配 revpos 属性。

这应该解决它:

doc._attachments[attmtid] = {};
doc._attachments[attmtid].revpos = "abc";

注意:这是基于您想要一个doc._attachments.123属性(这是问题中的示例代码将创建的)而不是doc._attachments.attmid属性的期望。

于 2012-12-11T16:32:12.197 回答