20080911 - 奇怪的 Javascript 对象

最近着迷 Javascript 中的对象,回顾以往项目时,记得用到C#里的Dictionary<T, T>时,利用 Microsoft ASP.NET AJAX Client 技术,可以将Dictionary<T, T>直接转为Javascript对象使用,今天突然想到,当Dictionary中的键是int类型时,返回到页面的Javascript对象会是怎样的?这个试验还没来得及做。

在Javascript中,可以利用JSON格式来定义对象,比如

 

var obj = {
    
1"重启",
    
2"关机",
    
3"开机"
}

alert(obj[
2]); // 这句会正常执行
alert(obj.2);  // 这句会报错

 

我们可以看到,对象名虽然有[_$a-zA-Z][_$a-zA-Z0-9]*的限制,但对于此obj[2],可以正常输出"关机",甚至,我们发现 

var obj2 = {
    
1"重启",
    
2"关机",
    
3"开机",
    
"!""奇怪的Javascript!" 
}

alert(obj2["!"]);


上述也能正常执行。

以前一直以为obj[property] === obj.property,看来错了。
obj.property的写法,仅仅当property为[_$a-zA-Z][_$a-zA-Z0-9]*时才成立。

而用obj[property]的写法,几乎可以支持任意符号。

遇到这点奇怪的,发上来,看看大家是否还可以挖掘一下。

posted on 2008-09-11 21:19  Eric Lee  阅读(322)  评论(0编辑  收藏  举报

导航