0

我正在努力修复生产错误,我不是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"]什么?这个第一个/外部数组代表什么信息/对象?

4

2 回答 2

3

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

iVO["images"]看起来像数组访问,但在这种情况下,代码正在images访问iVO. 最后,它返回images指向的对象,即{}另一个对象字面量。

var thisImage = $(this).data("data")正在使用 jquery 函数。 jQuery.data 的文档在这里thisImage是对调用返回的数据的引用data

iVO["images"][thisImage.fileKey] = thisImage;

只是设置一个值。第一次访问是访问images属性 on iVO,它是一个对象文字。从该对象文字中,代码为属性thisImage.fileKey(无论如何,它来自上一行的数据调用)分配thisImage.

所以,当你说

iVO 是一个 JSON 对象数组

iVO单个对象字面量,它在属性下包含另一个对象字面量images

对象文字中填充了 3 个值。键(属性的名称)取决于data调用返回的内容。这些值取决于thisImage(数据调用的结果)和变量imageType, 和uploadReason

您可以使用调试器单步执行此代码并查看每一步的值。

注意 JSON 在这里没有发挥作用。来自 json.org,“JSON 是一种完全独立于语言的文本格式......”

于 2012-04-24T00:27:18.583 回答
1

iVO是一个对象。这个对象有一个名为的属性images,它本身也是一个对象。该对象有 3 个属性,其名称包含在 中thisImage,我无法根据发布的代码确定其内容。

要回答你的最后一个问题,iVO["images"]相当于iVO.images。它是 的images财产iVO

于 2012-04-24T00:27:44.983 回答