1. 程式人生 > >Dictionary與Object的區別

Dictionary與Object的區別

   AS3中Object和 Dictionary都可以用來儲存key-value形式的資料,Dictionary類和Object唯一的區別在於:Dictionary物件可以使用非字串作為鍵值對的鍵。例如:

Js程式碼  收藏程式碼
  1. var obj:Object = new Object();   
  2. obj["name"] ="name"// key 字串"name" 
  3. obj[1] = 1; // key是1 (被轉換成字串"1") 
  4. obj[new Object()] ="object"// key是new Object(),被轉傳成字串"[object Object]" 
  5. for (var
     key:String in obj) {   
  6.         trace(key+":"+obj[key]); // 輸出 1:1 [object Object]:object name:name
  7. }  

也就是說,無論用什麼型別的變數作為鍵,Object都將key轉換成字串。同時,如果你使用了不同的物件作為鍵,都會被轉換成字串"[object Object]"作為鍵,因此而指向了同一個資料。例如:

Js程式碼  收藏程式碼
  1. var a:Object = new Object();      
  2. var b:Object = new Object();      
  3. var obj:Object = 
    new Object();      
  4. obj[a] = 1; // obj["[object Object]"] = 1;    
  5. obj[b] = 2; // obj["[object Object]"] = 2;    
  6. for (var key:String in obj) {      
  7.        trace(key+":"+obj[key]); // traces: [object Object]:2 
  8. }  

Dictionary類將沒有這個限制,你可以將鍵設定成任何一種資料型別。例如:

Js程式碼  收藏程式碼
  1. var a:Object = new Object();   
  2. var
     b:Object = new Object();   
  3. var dict:Dictionary = new Dictionary();   
  4. dict[a] = 1; // dict[a] = 1; 
  5. dict[b] = 2; // dict[b] = 2; 
  6. for (var key:* in dict) {   
  7.        trace(key+":"+dict[key]); // traces: [object Object]:2 [object Object]:1
  8. }  

注意

1、雖然在trace的時候,輸出的還是[object Object],但是這個結果是物件的toString的結果。在Dictionary物件中,代表的是不同的物件引用。

2、這裡的key的型別是*。這是很重要的,因為dict物件中的鍵可能是任何資料型別的。

3、Object的鍵必須是字串,或表示字串的表示式(變數或函式),若不是字串的表示式,則將呼叫toString()方法,將其轉化為字串;

4、與Object不同的是,Dictionary使用的鍵是物件的引用,而不是字串,且非原始物件鍵呼叫之前是通過全等運算子(===)來進行判斷,並不會將資料型別強制轉換之後再進行判斷。

From:

相關推薦

DictionaryObject區別

   AS3中Object和 Dictionary都可以用來儲存key-value形式的資料,Dictionary類和Object唯一的區別在於:Dictionary物件可以使用非字串作為鍵值對的鍵。例如: Js程式碼   var obj:Object = n

Constructor object 區別和聯絡

1. Constructor:是用於建立和初始化類中建立的一個物件的一種特殊方法。 constructor([arguments])  { ... } 在一個類中只能有一個名為 “constructor” 的特殊方法。 一個類中出現多次建構函式 (constructor)方法將會丟擲一個 Sy

js中的new操作符Object.create()的作用區別

fcm 並不會 copyright 性能 reat 現在 所有 tar tool js中的new操作符與Object.create()的作用與區別 https://blog.csdn.net/mht1829/article/details/76785231 201

for in Object.keys hasOwnProperty區別

har 補充 back es2017 https prot git type 限制 1、結論 for in遍歷對象所有可枚舉屬性 包括原型鏈上的屬性 Object.keys遍歷對象所有可枚舉屬性 不包括原型鏈上的屬性 hasOwnProperty 檢查對象是否包含屬性

String類中的equals方法Object類中equals方法的區別

今天在無意中發現一個小知識點,難度不大就是簡單和大家分享一下。 String str1 = new String("abc"); String str2 = new String("abc"); System.out.println(str1.equals(str2));//true

obeject.keyobject[key]的區別

https://segmentfault.com/q/1010000004225321 data[key]適用於動態取key、key為特殊字元。 data.key訪問的是data物件下的key。 data[key]訪問的是data陣列的下標為key的值(物件是可以以陣列形式來訪問的)。

【執行緒】java之Thread.sleep(long)object.wait()/object.wait(long)的區別及相關概念梳理

一、Thread.sleep(long)與object.wait()/object.wait(long)的區別 sleep(long)與wait()/wait(long)行為上有些類似,主要區別如下

== === Object.is() 區別 復習

n) 強制轉換 efi bject 類型轉換 data- 但是 轉換 obj == 強制類型轉換 其他類型強制轉換成number null == undefined " "==0 //true "0"==0 //true " " !="

HAProxyNginx區別

時間 請求 也會 維護 異常 會有 訪問 haproxy 失敗 1)HAProxy對於後端服務器一直在做健康檢測(就算請求沒過來的時候也會做健康檢查):後端機器故障發生在請求還沒到來的時候,haproxy會將這臺故障機切掉,但如果後端機器故障發生在請求到達期間,那麽前端訪問

axis2cxf區別

開源社區 -s 實現 部署 廣泛 asi -a ice 喜歡 1.CXF支持 WS-Addressing,WS-Policy, WS-RM, WS-Security和WS-I Basic Profile。Axis2不支持WS-Policy,但是承諾在下面的版本支持。 2.

C#中outref區別

erro 變量 但是 color 賦值 運行 網上 ann amp 一、ref(參考)與out區別 1、out(只出不進) 將方法中的參數傳遞出去,在方法中將該參數傳遞出去之前需要在該方法起始賦初值;在方法外傳遞的該參數可以不用賦值; 簡單理解就是:將一個東西拋出去之前必須

get( )getline( )區別

clas 輸入緩沖 ont blog 函數 std etl con span get與getline區別不是很大,但一個明顯的區別是get遇到 ‘\n ‘字符後便返回,這是 ‘\n ‘還在緩沖區中,所以下次讀出來的將是 ‘\n ‘,而getline遇到 ‘\n ‘也返

dynamocassandra區別

ffi out thrown ive for enc coord towards ren 雖說cassandra是dynamo的開源版本,但兩者還是有很大區別的。 coordinator的選取: 在dynamo論文中,一般是preference list中N個副本的第一個

xml html 區別

sim 顯示數據 類型 打開 替代品 title extent 知識 col 一、什麽是HTML 帶著疑問走到這裏,一句話:HTML(HyperTextMark-upLanguage)即超文本標記語言,是WWW的描述語言。 如果想了解更多請看以下博客:

Mysql中key 、primary key 、unique key index區別

條件 那是 database 表空間 可用 where 進行 utf8 擁有 索引被用來快速找出在一個列上用一特定值的行。沒有索引,MySQL不得不首先以第一條記錄開始並然後讀完整個表直到它找出相關的行。 表越大,花費時間越多。如果表對於查詢的列有一個索引,MySQL能快

Hibernate mybatis 區別

精通 targe man 做的 select read 持久層 定義 順序 JAVA面試中問及HIBERNATE與 MYBATIS的對比,在這裏做一下總結 我是一名java開發人員,hibernate以及mybatis都有過學習,在java面試中也被提及問道過,在項

Cookiesession區別

瀏覽器 cookie 通信設備 session與Cookie的區別此文章 來自烏龜運維wuguiyunwei.comQQ群:602183872主要區別:Cookie,也稱為HTTP cookie,Web cookie或瀏覽器cookie,是從網站發送到服務器並存儲在用戶的Web瀏覽器中的一小部分數

AppiumRobotium區別

觸摸 用戶 不能 語言設置 分開 clas 輸入文字 例子 mat Appium是基於UIAutomator框架實現的。Appium測試進程與目標應用進程是分開的,所以Appium不能直接訪問目標應用的各種element屬性進行copy&paste,而只能模擬觸發

STDIN_FILENOstdin區別(轉)

strong 出現 stdin cti efi 兩個 正常 span col 標準輸入 (stdin) 標準輸入是指數據(通常是文件)走向程序。程序要求數據傳輸使用讀的運算。並非所有程序都要求輸入。如dir或ls程序(顯示一個目錄中的文件名)運行時不用任何輸入。 除非重導

cvCvtColorcvtColor區別

blank 參數 接口類 類型 ima 灰度 another out ray 用到了rgb轉灰度圖功能,查到兩個函數,發現名字很像,功能也一樣,但是參數類型不一樣。 記錄一下。 可以看聲明,cvCvtColor是c語言風格接口。 /* Converts input arr