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

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

object.property
object["property"]


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

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

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

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

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

如果属性是运行时产生的(比如用户输入的),也就是说程序在预先不可能预知,那么使用 for/in 语法是唯一可以获知属性名的方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值