今天看“Flex 3”,考虑在实习结束之前将这本借来的书读完,然后也算是自己又多会了门语言(此语言和Java基本上很像,只是读懂代码和会写代码还是有很多差距的,更何况还有很多API呢,我终于认识到了了解API的重要性。。)
言归正传,话说一开始在code里看到Dictionary很是困惑,数据字典这个名词也是一直困惑我的名词,总是查完就忘。。Object还是蛮容易理解的,和JSONObject很像,应该说经常结合JSON来做远程数据传输。我们可以给Object的实例添加自定义的属性(一般一个类在初始化之前必须是预先定义好的,初始化之后我们只能访问预定义的属性和方法),举例如下:
var obj : Object = new Object(); obj['id'] = "1"; obj['name']="wyr"
也可以和定义Array一样,直接赋值,举例如下:
var obj:Object = {"id" : "1", "name" : "wyr"};
其实就是key-value,嗯。
其实Dictionary和Object很相像,用途也差不多是一样的,只是Object的key只能是字符串,就算赋值的时候不是,也会被转换为字符串的,Dictionary的key可以是任何类型。(Object的key都是被转换为字符串(String)类型理解的,当有多个对象,作为某个Object实例的key时,如果key对象的toString结果是一样的,那么得到的结果也是一样的),下面一个例子应该能多多少少说明这个问题:
var key1:Object = new Object();
key1.toString() = function():String {
return "1";
};
var key2:Object = new Object();
key2.toString() = function():String {
return "1";
};
var key3:String = "1";
var key4:int = 1;
var obj:Object = new Object();
obj["1"] = "a";
var dict: Dictionary = new Dictionary();
dict["1"] = "a";
//Result
trace(obj[key1]); //1
trace(obj[key2]); //1
trace(obj[key3]); //1
trace(obj[key4]); //1
trace(dict[key1]); //未定义
trace(dict[key2]); //未定义
trace(dict[key3]); //1
trace(dict[key4]); //1
其实还是有点小糊涂,多读读吧。。