美文网首页
2019-11-15es6种objects 和 maps 的区别

2019-11-15es6种objects 和 maps 的区别

作者: Kason晨 | 来源:发表于2019-11-15 17:26 被阅读0次

    什么是Map:

    Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。

    语法:

    new Map([iterable])

    objects 和 maps 的区别:

    Object和 Map类似的一点是,它们都允许你按键存取一个值,都可以删除键,还可以检测一个键是否绑定了值.因此,一直以来,我们都把对象当成Map来使用,不过,现在有了Map,下面的区别解释了为什么使用Map更好点.

    纠错
    一个对象通常都有自己的原型,所以一个对象总有一个"prototype"键。
    不过,从 ES5 开始可以使用 map = Object.create(null)来创建一个没有原型的对象。
    一个对象的键只能是字符串或者 Symbols,但一个 Map 的键可以是任意值。

    你可以通过size属性很容易地得到一个Map的键值对个数,而对象的键值对个数只能手动确认。
    但是这并不意味着你可以随意使用 Map,对象仍旧是最常用的。

    如果你不确定要使用哪个,请思考下面的问题:

    在运行之前 key 是否是未知的,是否需要动态地查询 key 呢?
    是否所有的值都是统一类型,这些值可以互换么?
    是否需要不是字符串类型的 key ?
    键值对经常增加或者删除么?
    是否有任意个且非常容易改变的键值对?
    这个集合可以遍历么?
    假如以上全是“是”的话,那么你需要用 Map 来保存这个集。 相反,你有固定数目的键值对,独立操作它们,区分它们的用法,那么你需要的是对象。

    相关文章

      网友评论

          本文标题:2019-11-15es6种objects 和 maps 的区别

          本文链接:https://www.haomeiwen.com/subject/uhvsictx.html