我正忙着解决生产错误,并且不是一名JS开发人员。在我的分析可以进一步发展之前,我需要绝对相信我对以下代码行做出了一些正确的假设:
var iVO = {
"images":{}
};
var thisImage = $(this).data("data");
iVO["images"][thisImage.fileKey] = thisImage;
iVO["images"][thisImage.imageType] = imageType;
iVO["images"][thisImage.uploadReason] = uploadReason;
这是我的假设。如果有任何正确或误导,请纠正我:
iVO
是一个JSON对象数组fileKey
,imageType
和uploadReason
)我没有得到的是"images"
索引的重要性,iVO["images"]
的价值/意义是什么?这个第一个/外部数组代表的信息/对象是什么?
答案 0 :(得分:3)
iVO
是一个对象字面值。它的功能类似于哈希。
iVO["images"]
看起来像数组访问,但在这种情况下,代码正在访问images
上的iVO
属性。最后,它返回images
指向的{}
,即var thisImage = $(this).data("data")
,另一个对象字面值。
thisImage
正在使用jquery函数。 The documentation for jQuery.data is here。 data
是对iVO["images"][thisImage.fileKey] = thisImage;
images
只是设置一个值。第一个访问是访问iVO
上的thisImage.fileKey
属性,这是一个对象文字。从该对象文字中,代码为thisImage
的值分配属性iVO
(无论是什么,它来自前一行的数据调用)。
所以,当你说
时iVO是一个JSON对象数组
images
是一个单个对象文字,它包含data
属性下的另一个对象文字。
对象文字中包含3个值。键(属性的名称)取决于thisImage
调用返回的内容。值取决于imageType
(数据调用的结果)以及变量uploadReason
和{{1}}。
您可以使用调试器逐步执行此代码,并查看每个步骤的值。
注意JSON不会在这里发挥作用。来自json.org,“JSON是一种完全独立于语言的文本格式......”
答案 1 :(得分:1)
iVO
是一个对象。此对象具有名为images
的属性,该属性本身也是一个对象。该对象有3个属性,其名称包含在thisImage
中,其内容根据发布的代码无法确定。
要回答上一个问题,iVO["images"]
相当于iVO.images
。它是images
的{{1}}属性。