函数可以作为Javascript对象(哈希表)的键吗
一般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 对象的键,是因为在内部已经转换为了字符串!!!
转载于:https://www.cnblogs.com/zhenyu-whu/p/3277389.html
函数可以作为Javascript对象(哈希表)的键吗相关推荐
- JavaScript 实现哈希表
JavaScript 实现哈希表 源码地址 目录 JavaScript 实现哈希表 一.哈希表简介 1.1.认识哈希表 1.2.哈希化的方式 1.3.解决冲突的方法 1.4.寻找空白单元格的方式 线性 ...
- 【C++】【哈希表】【哈希函数】实现自己的哈希表,解决哈希冲突;动态哈希表;
文章目录 前言 1.哈希表与哈希函数的引入 2.哈希表 3.哈希表优劣 一.设计 1.一般.通用哈希函数的设计 2.默认哈希函数 二.哈希冲突 1.链地址法.(seperate chaining ) ...
- 详解JavaScript实现哈希表
哈希表原理 哈希表是一种非常重要的数据结构,几乎所有的编程语言都有直接或者间接的应用这种数据结构,它通常是基于数组实现的. 相对于数组,它有更多的优势 它可以提供非常快速的插入-删除-查找操作. 哈希 ...
- 每日一题之对象哈希表
给定一个字符串 s 和一些 长度相同 的单词 words .找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置. 注意子串要与 words 中的单词完全匹配,中间不能有其他字符 , ...
- JavaScript数据结构之 —— 08哈希表
散列算法(也就是哈希)的作用是尽可能快地在数据结构中找到一个值.在之前如果要在数据结构中获得一个值(使用get方法),需要遍历整个数据结构来找到它. 所有元素根据和该元素对应的键,保存在数组的特定位置 ...
- C++ 哈希表查询_进入哈希函数结界的世界
1. 前言 哈希表或称为散列表,是一种常见的.使用频率非常高的数据存储方案. 哈希表属于抽象数据结构,需要开发者按哈希表数据结构的存储要求进行 API 定制,对于大部分高级语言而言,都会提供已经实现好 ...
- JavaScript的JSON转变函数parse[转化为对象] stringfy[转化为字符串]
创建一个对象数组:使用parse会把字符串转化为对象 var sites = [{ "name":"runoob", "url":" ...
- 10_JavaScript数据结构与算法(十)哈希表
JavaScript 数据结构与算法(十)哈希表 认识哈希表 哈希表是一种非常重要的数据结构,几乎所有的编程语言都直接或者间接应用这种数据结构. 哈希表通常是基于数组实现的,但是相对于数组,它存在更多 ...
- 趣味算法——探索哈希表的神秘世界
文章目录 前言: 一.哈希表的魔力 二.哈希表的灵魂--哈希函数 1. 什么是哈希函数 2. 哈希函数的特性 3. 哈希冲突 三.解决冲突的艺术 1. 开放寻址法 2. 链地址法 3. 冲突解决策略的 ...
- 制作销售属性的组合的集合为哈希表,根据用户点击的属性组合判断某个skuId并跳转到对应的页面
一.查询spu系列商品: 1.查询spu系列商品中所有属性值之间的组合(一个组合,即一个sku商品)!!! 这里的数据苹果11 颜色:黑色.白色.红色: 版本:128G.256G: 总共6种组合: S ...
最新文章
- 013_html水平线
- it is likely that the remote side declared peer gone on this jvm
- vuex ajax dev,vuex中使用ajax的话如何维护状态?
- LeetCode刷题实战(2):Add Two Numbers
- 文件和异常 Python
- 应用程序进程启动过程
- 1014.修改clion的工具链
- VMware vCenter 资源池
- 美国《国家地理》:年度十大新闻
- kafka测试工具_kafka压测工具:同步方式2000+、异步方式10000+、带源码
- VS2010与.NET4系列 13. ASP.NET 4 SEO 改进
- spring事件监听器系列二:@EventListener注解原理
- 【工具】js脚本下载百度文库生成word文本 + python爬取百度文库
- Android mc怎么和win10联机,我的世界手机版与win10版联机可完美互通
- python教孩子学编程_学编程要从娃娃抓起——教孩子学Python
- 数据分析师岗位要求案例分析
- 【视频编码】【Vue】【明星开源项目】| Chat · 预告
- 快来喝杯Java(初级第一章)
- 遗传算法入门(连载之十) 神经网络入门(连载预告)
- 单片机中动态数码管闪烁问题
热门文章
- 简单的实现了Dijkstra,
- 【OpenCV入门指南】第六篇 轮廓检测 下
- 基础知识:Mac上更改“字体”窗口中的字体大小
- setContentView是如何把布局加上去的
- CodeForces405B - Jzzhu and Sequences 矩阵快速幂
- iOS底层探索之Block(三)——Block的本质
- iOS 应用的启动流程和优化详解
- Word文档恢复软件推荐
- bug宝典linux篇 LC_CTYPE: cannot change locale (en_US.UTF-8): No such file or directory(转)
- nfs文件共享服务器搭建详解