首页 > 给 JS 程序员解释为什么 Map 类型允许不同类型数据作为 Key?

给 JS 程序员解释为什么 Map 类型允许不同类型数据作为 Key?

String 类型作为 Key 不是已经够用了吗, 为什么要各种类型的呢?


在从C到Lisp的这根“动态能力”的坐标轴上,Java是坐在C++旁边的最不动态的一族,而JS是在非Lisp系的语言中最靠近Lisp的最动态的一族。所以题主可以先去找一些lisp黑客写的抨击GoF的文章,我这里简单提一下大意『设计模式就是Java太傻了不得不绕大圈子来约定碰到Java的缺陷的时候应该怎么办』

偏题了。正如评论所说Map的初衷是一个对象到另一个对象的映射,如果仅限string key,那么势必需要把对象抽象成一个唯一的string来表示,很多时候这件事很傻。那为什么JS程序员几乎感觉不到这个需求呢?我认为是因为在JS的世界里,很多时候要做这样的映射,直接赋值就完事儿了

map = new Map()
map.add(student, teacher)
map.get(student)//my teacher

vs

student.teacher = teacher
student.teacher//my teacher

那么前者的好处在哪里呢?自然是可以把这组映射本身作为一个对象来维护,比如很容易同时存在两个map对象描述两套师生搭配的方案,或者可以直接把这种映射保存到某个地方

【热门文章】
【热门文章】