第八章 8.6 用作关联数组的对象(Objects as Associative Arrays)

访问对象的属性可以用  "." 或 "[]" 语法。下面两个表达式效果是等效的:

object.property
object["property"]


这两种写法主要的区别是,前者的 property 是一个标志符(identifier),他们不是数据类型(data type). 而后者是字符串,是一种数据类型。所以后者可以在运行时刻来灵活的动态估算。比如:

var addr = "";

for (i = 0; i < 4; i++) {
    addr 
+= customer["address" + i] + '\n';
}

当一个 Object 以 [] 语法访问的时候,我们称之为“关联数组”(associate array)。JavaScript 对象在内部实际上就是以关联数组的方式来实现的。"." 的语法使得访问方式类似于 c 或 Java. 从这个角度来看,JavaScript 的对象其实更像 Perl 里的数组。

考虑到关联数组的时候, for/in 语法的功能才得以充分体现。下面是例子:

var value = 0;
for (stock in portfolio) {  
    
// For each stock in the portfolio, get the per share value  
    // and multiply it by the number of shares.
    value += get_share_value(stock) * portfolio[stock];

如果属性是运行时产生的(比如用户输入的),也就是说程序在预先不可能预知,那么使用 for/in 语法是唯一可以获知属性名的方法。

posted on 2005-04-22 14:09  NeilChen  阅读(1000)  评论(0编辑  收藏  举报

导航