美文网首页
JS Object对象、Map对象和WeakMap对象

JS Object对象、Map对象和WeakMap对象

作者: zhuchangjin | 来源:发表于2022-08-29 18:40 被阅读0次

首先Map是出于es6中的规范,其本身就是一个构造函数

一、Map和普通的object对象对比

1.map对象的key可以是任何数据类型,object对象的key只能是字符串

2.map可以通过size属性获取长度,object只能通过循环遍历

二、基本Map特性

new Map()创建新的 Map 对象。

set()为 Map 对象中的键设置值。

(注意: 设置引用类型数据,key是引用指向,比如:let myMap = new Map();let a = {'a': 1};myMap.set(a, 123);console.log(myMap.get({'a': 1})) // undefined; )

get()获取 Map 对象中键的值。

(注意:Map的键中NaN === NaN,并且0 === +0 === -0)

entries()返回 Map 对象中键/值对的数组。

keys()返回 Map 对象中键的数组。

values()返回 Map 对象中值的数组。

三、更多Map特性

clear()删除 Map 中的所有元素。

delete()删除由键指定的元素。

has()如果键存在,则返回 true。

forEach()为每个键/值对调用回调。

四、对比Object对象和Map对象内存占用以及性能

1.内存占用

Object和Map的 工程级实现在不同浏览器中存在明显差异,但存储单个键值对所占用的内存数量都会随键的数量线性增加。给定固定大小的内存,Map大约可以比Object多存储50%的键值对。

2.性能

插入性能——消耗大致相当,Map在某些浏览器会快一些,若涉及大量代码,Map的性能更加

查找速度——与插入不同,在大型Object和Map中查找键值对的性能差异极小,但如果只包含少量键值对,则Object更快。在把Object当数组使用时,浏览器引擎可以进行优化,内存的使用更高效

删除性能——Map的delete()操作快

五、WeakMap对象

只能将对象作为健,并在删除key后会释放内存,并且没有size属性,表现为弱键和不可迭代键

弱引用:当删除引用后释放内存,map对象则因强引用不会清除内存

不可迭代:WeakMap对象的key在任何时候都可能被销毁,没必要提供迭代其键值对的能力。WeakMap实例之所以限制只能使用对象作为键,是为了保证只有通过键对象的引用才能取得值。如果允许原始值,那就没办法区分初始化时使用的字符串字面量和初始化之后使用的一个相对的字符串了。因此也没有了size,entties等属性。

相关文章

  • JS Object对象、Map对象和WeakMap对象

    首先Map是出于es6中的规范,其本身就是一个构造函数 一、Map和普通的object对象对比 1.map对象的k...

  • jQuery前端框架--笔记

    1,JS对象和jQuery对象的区别 jQuery就是JS中的new Object生成的普通对象。 2,JS对象和...

  • js 对象和jquery对象的比较

    1、js 对象和jquery对象的区别 jquery对象是js中的new Object()生成的普通对象 2、js...

  • 原型与原型链

    一、 普通对象与函数对象 JS中都可以当做对象,分为普通对象和函数对象,Object 、Function 是 JS...

  • es6 WeakMap - 2019-01-13

    2019-01-13 创建 WeakMap与Map的区别: WeakMap只接受对象作为键名(null除外),不接...

  • JS 预编译执行顺序

    1.WeakMap的键名只支持对象,map的键名可以是任意值。 2. Map可以遍历,WeakMap不可以 3. ...

  • ES6中的Map和Set对象

    Map 对象 Map对象保存键值对。任意值(对象或者原始值)都可以作为一个键或一个值 Map和Object的区别 ...

  • 原型和原型链 - 草稿

    一 . 原型 js中万物皆对象,(普通对象和函数对象) Object.function是js自带的函数对象 1.举...

  • mapbox-gl-js接口--map对象

    创建map对象: new mapboxgl.Map(options:Object); options:Object...

  • 文件读写

    1.json是什么 -javascript Object Notation js对象表示法 -json和js对象格...

网友评论

      本文标题:JS Object对象、Map对象和WeakMap对象

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