这个Javascript创建了什么类型的对象?

时间:2012-04-24 00:25:20

标签: javascript

我正忙着解决生产错误,并且是一名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对象数组
  • 然后为每个JSON对象提供3个属性(fileKeyimageTypeuploadReason

我没有得到的是"images"索引的重要性,iVO["images"]的价值/意义是什么?这个第一个/外部数组代表的信息/对象是什么?

2 个答案:

答案 0 :(得分:3)

iVO是一个对象字面值。它的功能类似于哈希。

iVO["images"]看起来像数组访问,但在这种情况下,代码正在访问images上的iVO属性。最后,它返回images指向的{},即var thisImage = $(this).data("data"),另一个对象字面值。

thisImage正在使用jquery函数。 The documentation for jQuery.data is heredata是对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}}属性。