如果你创建这样的对象:
building[45] = new Object();
building[45].name = myName;
building[45].price = parseInt(myPrice);
building[128] = new Object();
building[128].name = myName;
building[128].price = parseInt(myPrice);
现在,如果我想在函数中使用building[128]
,最好将它分配给临时变量,以便浏览器不必遍历所有对象来查找building[128]
属性?
示例:
var theID = 128;
var temp = building[theID]; //temp.name & temp.price
或者直接使用building[theID].name
和building[theID].price
?
他们的查询方式有什么不同吗?
答案 0 :(得分:4)
数组访问是一个恒定时间操作(以Big-O表示法,这是O(1)
)。换句话说,在访问building[128]
之前,浏览器不需要迭代超过127个项目。
既然如此,我仍然建议将数组项存储在变量中。这样做的主要原因是JavaScript缩小程序将能够将变量重命名为a
之类的短名称,以便属性访问为a.name
等等。这样可以节省一些字节,并且在更大的范围内节省的总字节数很多。
JavaScript数组是JavaScript对象的一种特殊形式,数组索引实际上只是属于整数的属性名称。 JavaScript: The Definitive Guide, David Flanagan
使用Flanagan对数组的定义,每次通过索引访问数组项时,您实际上都是启动两步过程:访问数组对象,然后按属性名称(索引)查找值。通过将数组项保存在变量中,访问它就像查看内存中的值一样简单。
答案 1 :(得分:0)
或者,您可以这样构建:
building[45] = {
name: myName,
price: parseInt(myPrice, 10)
};
building[128] = {
name: myName,
price: parseInt(myPrice, 10)
};
编辑:哦,我看到你的问题与我的阅读方式有所不同。抱歉。我会在这里保留这个答案,因为它可能会有所帮助。