AS3中Object和 Dictionary都可以用来保存key-value形式的数据,Dictionary类和Object唯一的区别在于:Dictionary对象可以使用非字符串作为键值对的键。例如:
- var obj:Object = new Object();
- obj["name"] ="name"; // key 字符串"name"
- obj[1] = 1; // key是1 (被转换成字符串"1")
- obj[new Object()] ="object"; // key是new Object(),被转传成字符串"[object Object]"
- for (var key:String in obj) {
- trace(key+":"+obj[key]); // 输出 1:1 [object Object]:object name:name
- }
也就是说,无论用什么类型的变量作为键,Object都将key转换成字符串。同时,如果你使用了不同的对象作为键,都会被转换成字符串"[object Object]"作为键,因此而指向了同一个数据。例如:
[javascript]
view plain
copy
- var a:Object = new Object();
- var b:Object = new Object();
- var obj:Object = new Object();
- obj[a] = 1; // obj["[object Object]"] = 1;
- obj[b] = 2; // obj["[object Object]"] = 2;
- for (var key:String in obj) {
- trace(key+":"+obj[key]); // traces: [object Object]:2
- }