通常Javascript書在講解對象時,都指出Javascript中的對象能夠做爲哈希表,存儲鍵值數據。一般狀況下,鍵爲字符串,若是鍵是數字的話,實際上在內部也會轉換爲字符串。javascript
好比html
var o = { name: 'zzy', 5: 'honghu' };
那麼能夠測試 o[5] 或 o['5'] 的值都是 'honghu'java
那麼是否是意味着 對象的鍵只能爲字符串呢?函數
由此咱們定義一個函數測試
function f() { return 'function'; }
而後定義 o[f] = 40;ui
經過 alert 輸出 f 和 o[f] 能夠看到, f 爲函數, o[f] 爲 40.spa
爲了進一步確認 o 中鍵值對的狀況,能夠經過code
for(var k in o) { alert(k); alert(o[k]); }
如下是測試網頁代碼xml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>Function as the Key of a object</title> </head> <body> <p>將函數做爲對象的Key,存儲值</p> <script type="text/javascript"> function f() { return 'function'; } var o = { name: 'zzy', 5: 'honghu' }; o[f] = 40; alert(f); alert(o[f]); for(var k in o) { alert(k); alert(o[k]); } </script> </body> </html>