函數能夠做爲Javascript對象(哈希表)的鍵嗎

通常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>

 

結論: 函數能夠做爲 Javascript對象的鍵。 

仍是把本身坑了,函數能夠做爲 Javascript 對象的鍵,是由於在內部已經轉換爲了字符串!!!

相關文章
相關標籤/搜索