一般Javascript书在讲解对象时,都指出Javascript中的对象可以作为哈希表,存储键值数据。通常情况下,键为字符串,如果键是数字的话,实际上在内部也会转换为字符串。

比如

var o = {
name: 'zzy',
5: 'honghu'
};

那么可以测试 o[5] 或 o['5'] 的值都是 'honghu'

那么是不是意味着 对象的键只能为字符串呢?

由此我们定义一个函数

function f() {
return 'function';
}

然后定义 o[f] = 40;

通过 alert 输出 f 和 o[f] 可以看到, f 为函数, o[f] 为 40.

为了进一步确认 o 中键值对的情况,可以通过

for(var k in o) {
alert(k);
alert(o[k]);
}

以下是测试网页代码

<!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 对象的键,是因为在内部已经转换为了字符串!!!

函数可以作为Javascript对象(哈希表)的键吗的更多相关文章

  1. JavaScript实现哈希表

    JavaScript实现哈希表 一.哈希表简介 1.1.认识哈希表 哈希表通常是基于数组实现的,但是相对于数组,它存在更多优势: 哈希表可以提供非常快速的插入-删除-查找操作: 无论多少数据,插入和删 ...

  2. redis哈希表数据类型键的查询和删除命令

    一.查询 命令名称:hget 语法:hget key field 功能:返回哈希表key中给定域field的值 返回值: 给定域的值. 当给定域不存在或是给定key不存在时,返回nil 命令名称:hg ...

  3. redis哈希表数据类型键的设置

    命令名称:hset 语法:hset key field value 功能: 1)将哈希表key中的域field的值设为value. 2)如果key不存在,一个新的哈希表被创建并进行hset操作. 3) ...

  4. 创建JavaScript的哈希表Hashtable

    Hashtable是最常用的数据结构之一,但在JavaScript里没有各种数据结构对象.但是我们可以利用动态语言的一些特性来实现一些常用的数据结构和操作,这样可以使一些复杂的代码逻辑更清晰,也更符合 ...

  5. stl vector、红黑树、set、multiset、map、multimap、迭代器失效、哈希表(hash_table)、hashset、hashmap、unordered_map、list

    stl:即标准模板库,该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法 六大组件: 容器.迭代器.算法.仿函数.空间配置器.迭代适配器 迭代器:迭代器(iterator)是一种抽象的设计 ...

  6. Python 中的哈希表

    Python 中的哈希表:对字典的理解   有没有想过,Python中的字典为什么这么高效稳定.原因是他是建立在hash表上.了解Python中的hash表有助于更好的理解Python,因为Pytho ...

  7. 如何理解javaScript对象?

    在我们生活中,常常会提到对象一词,如:你找到对象了吗?你的对象是谁呀?等等. 在我们家庭中,有男友的女青年都会说我有对象了,那么她的对象是XX(她的男友). 夫妻间呢?都会说我的爱人是谁谁谁,现在我们 ...

  8. js:数据结构笔记7--哈希表

    哈希表(散列表):通过哈希函数将键值映射为一个字典; 哈希函数:依赖键值的数据类型来构建一个哈希函数: 一个基本的哈希表:(按字符串计算键值) function HashTable() { this. ...

  9. 哈希表(Hash)的应用

    $hs=@() #定义数组 $hs=@{} #定义Hash表,使用哈希表的键可以直接访问对应的值,如 $hs["王五"] 或者 $hs.王五 的值为 75 $hs=@''@ #定义 ...

随机推荐

  1. ArcSde for Oracle服务注册

    1.首先安装ArcSde,安装完成之后在dos命令窗口运行如下命令: sdeservice -o create -d oracle,instance -p sde -i port; 参数说明: ins ...

  2. Libev学习笔记2

    这一节根据官方文档给出的简单示例,深入代码内部,了解其实现机制.示例代码如下: int main (void) { struct ev_loop *loop = EV_DEFAULT; ev_io_i ...

  3. hdoj 3065 病毒侵袭持续中(AC自动机)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3065 思路分析:问题需要模式匹配多个模式串,需要注意的是模式串会包含和重叠,需要对AC自动机的匹配过 ...

  4. C#--遍历目录实例

    鉴于前面几篇博客都说了,这边就啥都不说了.直接就開始贴代码了. 1.控件解释: FolderBrowserDialog控件一个----用来显示"浏览目录"对话框 TextBox控件 ...

  5. VCS引起的oracle数据库异常重新启动一例

    1. 环境描写叙述 操作系统版本号:SUSE Linux Enterprise Server 10 sp2 (x86_64) 数据库版本号:Oracle 11.1.0.7.16 VCS版本号:5.1 ...

  6. js 常用的一些函数

    //设置默认焦点    var setFocus = function SetFocus(elementId) {        document.onkeydown = function (even ...

  7. WPF自学笔记

    WPF使用哪几种元素作为顶级元素: 1. Window元素 2. Page元素(与Window元素类似,用于可导航的应用程序) 3. Application元素(定义应用程序资源和启动设置) PS:在 ...

  8. C++类的封装_工程

    一个C++工程 main.cpp #include<stdio.h> #include"Array.h" int main(){     Array a1(10); f ...

  9. js实现input输入框只能输入数字的功能

    <input type="text" style="ime-mode:disabled;" onpaste="return false;&quo ...

  10. 多线程下载工具-Axel

    1.安装: apt-get install axel 2.用法: axel 参数 文件下载地址 3.常用参数: -n 指定线程数 -o 指定文件存储位置(如不指定,默认存在当前位置(pwd)) -q ...