a[1]为什么不是 情形2呢?因为a是个数组因此也是个对象,这个对象有属性“1”,其【value】 attribute的值返回。这样理解对么?
=============================================
发信人: zli07 (Anonymous), 信区: WebDev
标 题: Re: 很好奇javascript 对数组下标是怎么处理的
发信站: 水木社区 (Thu Nov 1 13:25:59 2012), 站内
a[1.0] 等效于 a[1]。
js对于引用属性访问全部都是统一的过程,访问a[i]时,先将a变成对象类型O,然后调用desc = O.GetProperty(i)。(GetProperty为对象的内部方法,返回PropertyDescriptor类型,不能通过编程调用)
1. 如果i未定义,则desc为undefined,结果为undefined
2. 如果desc的Value属性为true,返回desc的value
3. 如果desc的Get属性为true,调用desc的get方法并返回
4. 否则,如果O上有accessor,以i为参数调用accessor并返回
5. 否则,返回undefined
对于数组的length,符合上述的情形3,而a[1]符合上述的情形4
【 在 fairfox 的大作中提到: 】
: 网上说 js 数组下标都是转成字符串来访问,所以 a[0] 和 a['0'] 是一样的, 而a[1] 和
: a[1.0] 不是一个,a[1.0] 相当于 a['1.0']
: 但同时数组又有个 length 属性,只有整数下标的元素被计算在内。js 又没有整数类型。
: ...................
--
FROM 59.175.226.*