心雨无痕

OnlyProgrammer

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

    这里做个笔记吧。

    Object使用字符串作为key,即使你使用了其他类型的数据作为key,Object也会将使用该key的toString方法得到其字符串表示作为key来存储,也就是说Object使用toString方法进行键的比较。

var a:Object = new Object();

var ka:Object = new Object();

a[ka] = 'i am ka';

trace(a['ka']); // 输出 i am ka

 

 

    Dictionary使用各种数据类型来作为key,它使用全等运算符(===)来进行键比较,在使用对象作为键时,它只比较实际的对象,即使这个对象有多个引用,在它眼中也只是一个键罢了。但是我发现一个很奇怪的现象,就是对Dictionary来说,指定key为整型字符串的时候,它会直接转换成Number类型存储,但是带小数点的浮点数字符串则依然按照字符串存储,这点有点不解~~~~~~~

var b:Dictionary = new Dictionary();
var ka:Object = new Object();
var ka_1:Object = ka;
b[ka] = 'ka here';
trace(b[ka_1]); //输出: ka here
trace(b['ka']); //输出: undefined
b['1'] = 'this is 1';
trace(b[1]); //输出: this is 1
b['1.1'] = 'this is 1.1';

for( var k:Object in b){
   trace(k);
   trace(typeof k);
}
/* 输出:
1
number
1.1
string
[object Object]
object
*/

posted on 2012-05-07 12:14  心雨无痕  阅读(1130)  评论(0编辑  收藏  举报