我有一个 Web 应用程序,它调用一个 Web 服务,该服务返回一些表示对象数组的 JSON。每个对象都有一些字段。下面是一些示例 JSON 来给出一个想法:
{
"data": [
{
"id": "12345",
"from": {
"name": "John Doe",
"id": "6789"
},
"start_time": "2012-12-16T02:17:20+0000",
"end_time": "2012-12-16T02:17:20+0000",
"publish_time": "2012-12-16T02:17:20+0000"
}
},
{
"id": "8888",
"from": {
"name": "Jane Smith",
"id": "011"
},
"start_time": "2012-12-16T02:17:20+0000",
"end_time": "2012-12-17T02:17:20+0000",
"publish_time": "2012-12-16T02:17:20+0000"
}
}
]
}
一旦返回,我使用 jQuery 的 parseJSON() 方法将其膨胀为对象数组(保留“数据”值)。这一切都很好,但是在我拥有我的数组之后,我有几个可以在每个数组插槽上运行的函数。例如,假设有一个名为 GetDuration() 的函数将打印出 end_time 和 start_time 之间的时间间隔。无论如何,我定义了几个函数(可能是 15 个),此时,我只需遍历整个数组并使用函数的副本对每个对象进行膨胀。例子
for (var i=0;i<data.length;i++)
data[i].TimeLapse = function() { ... };
我认为这可以提高效率。现在,我认为每个数组项都有一个相同函数的单独副本,这不是必需的。我还注意到处理时间的滞后,我希望可以减少。我读过关于 javascript 闭包的文章,在这种情况下它们似乎可以帮助我,但我没有太多在闭包中编写函数的经验。我会设置闭包然后修改 JSON 以某种方式膨胀到闭包类型的对象吗?或者我会像我今天所做的那样膨胀到常规的 javascript 对象,然后以某种方式通过并更改对象类型以指向我创建的闭包?
任何想法或建议将不胜感激。
谢谢...
-本