ES6深入浅出-10 ES6新增的数据类型-3.其他类型
Map类型
Map 类型 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map
Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。
普通的对象里面用对象做a做为key值,最终会被转换成字符串。
取出对象a的值
弥补了对象只能以字符串作为key的缺点。Map可以用任何东西作为key
怎么知道一个Map里面有多少key呢?
map.keys迭代和 map.values迭代
再加一个对象{name: '2'}、然后再迭代map.keys打印出来所有的key
打印所有的values
key和value都打印
weakSet类型
一旦一个东西放到对象,就要涉及到垃圾回收。
对象可能很大,越大就越占内存。
把执行这块的内存 置位null 就会回收了。
有时候这种引用关系是特别难以看出来的。目前我们没有办法主动把这个函数主动垃圾回收掉。
把button设置为null。就没有用人引用了。就会被垃圾回收。
button和按钮的关系一旦断了 按钮和监听的事件也会被干掉。
所有只需要写button=null 就被会自动GC
一般没有人会想到这个问题,所以内存就这样占着,所以网页是一个非常浪费内存的应用程序
即使这么写IE8也存在垃圾回收的bug。这个函数会被占着内存。这就叫做内存泄露。有一块内存,你自己不用,别人也不能用。
开始讲WeakSet
button和按钮之间的关系叫做引用。button=null就断开了引用。
如果一个按钮被一个变量引用着就说明开发者想用这个按钮。所以不能回收这个按钮相关的内存。
现在出了个弱引用,用虚线表示。假设button和按钮的引用断开,这个按钮就会被回收,不会去把弱引用当做引用的
弱引用就是我虽然引用着你,但是我不属于你垃圾回收的、计算范围。你不用管我,回收就回收。
弱引用指向的可能是一个不存在的。
只要记住一点。弱引用不是GC计算的范围。
所以浏览器很有可能把你弱引用的东西删掉。
WeakSet就是你把对象放在WeakSet里面,这个对象可以被回收。
把空对象o加到set里面。
现在如果让o等于null。那么这个对象就被回收了。set里面指向的o对象也就不存在了。
如果用Set这个对象不能被GC,因为这个Set引用着这个对象。
我们用set.entries,可以找到这些引用。
引用着这个对象。
没有办法获取WeakSet里面所有的值,只有下面几个方法。没有entries方法
WeakMap
也是弱引用,没办法列出里面所有的值
文章:ES2015 WeakMap的学习和使用 https://zhuanlan.zhihu.com/p/25454328
TypedArray没讲
主要用在二进制文件处理,比如果音频、视频、图片、文件。
结束
ES6深入浅出-10 ES6新增的数据类型-3.其他类型的更多相关文章
- ES6深入浅出-10 ES6新增的数据类型-1.Symbol与隐藏属性
ES5现有的数据类型.7种数据类型. 新的类型是属于Object 最普通的类型.plain object 数组array 函数function 下面这些都属于Object类型. 今天要讲的 set类型 ...
- ES6深入浅出-10 ES6新增的数据类型-2.Set与数组去重
一种新的数据类型,它是对象的一种,Set,很像数组,又不是数组. Set 类型 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Refe ...
- ES6深入浅出-12 ES6新增的API(下)-1.录屏
String.includes es5里面判断字符串是否存在的方法 search searcg的厉害之处是可以使用正则 match正则的方式 repeat -1遍,就不合法 startsWith 判断 ...
- ES6深入浅出-11 ES6新增的API(上)-2.Array新增API
Array.form 把不是数组的东西变成数组.最常见的就是把伪数组变成数组 那么什么是伪数组 这就是伪数组,因为它不是继承自Array的原型的对象.它只是一个看起来很像数组的数组 只看下面的代码.a ...
- ES6深入浅出-11 ES6新增的API(上)-1.Object.assign
这些都是es6才有的 Object.assign 在a加上三个属性 分别是p1\p2\p3 以前是这么去加 b的三个属性p1.p2.p3就全部复制到a这个对象上了. 把后面的东西放到前面的东西上 两个 ...
- ES6深入浅出_汇总贴
H:\BaiDu\ES6深入浅出-wjw ES 6 新特性一览:https://frankfang.github.io/es-6-tutorials/ 我用了两个月的时间才理解 let https:/ ...
- ES6新增的数据类型Map和Set。
Javascript的默认对象表示方式 {} ,即一组键值对. 但是Javascript的对象有个小问题,就是键必须是字符串.但实际上Number或者其他数据类型作为键也是非常合理的. 为了解决这个问 ...
- ES6深入浅出-5 新版对象-1.如何创建对象
对象属性的加强: 可以通过new Object(), Object.create()方法,或者使用字面量标记(初始化标记)初始化对象. 一个对象初始化器,由花括号/大括号 ({}) 包含的一个由零个或 ...
- ES6 Generator vs ES6 async/await
ES6 Generator vs ES6 async/await next yield promise refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允 ...
随机推荐
- vue input只允许输入数字
template: <input type="text" v-model="pageIndex" @keyup="inputChange&quo ...
- Python爬取网页信息
Python爬取网页信息的步骤 以爬取英文名字网站(https://nameberry.com/)中每个名字的评论内容,包括英文名,用户名,评论的时间和评论的内容为例. 1.确认网址 在浏览器中输入初 ...
- ES的底层原理-倒排索引的概念
Elasticsearch底层使用的使用的lucene lucene使用的是倒排索引的方式来进行加快检索速度 倒排索引的原理 doc_1 The quick brown fox jumped ...
- 物体检测方法(1) - YOLO 详解
最近遇到一些卡证识别的检测问题,打算先把理论知识梳理一下,随后还会梳理一版代码注释. 以前的region+proposal来检测的框架,这一系列速度和精度不断提高,但是还是无法达到实时.存在的主要问题 ...
- Hbase节点及原理
1.Hbase架构:Clinet.Zookeeper.Master.RegionServer.Region.Store.MemStore.HLog 1.读过程 2.写过程 https://www.cn ...
- cube.js 学习(一)简单项目创建
cube.js 是一个很不错的模块化分析框架,基于schema生成sql 同时内置可代码生成,可以快速的搞定 web 分析应用的开发 安装cli 工具 npm install -g cubejs-cl ...
- 洛谷 P2627 修剪草坪 题解
P2627 修剪草坪 题目描述 在一年前赢得了小镇的最佳草坪比赛后,Farm John变得很懒,再也没有修剪过草坪.现在,新一轮的最佳草坪比赛又开始了,Farm John希望能够再次夺冠. 然而,Fa ...
- AtCoder Grand Contest 019 题解
传送门 \(A\) 咕咕 int a,b,c,d,n,t; int main(){ scanf("%d%d%d%d%d",&a,&b,&c,&d,& ...
- 洛谷P3124被困在haybales
题目 按理来说是可以二分的,但是发现其实直接暴力然后注意细节就可以了. 先找到牛所在的起点,然后分别向右找和向左找. 第一次查找从\(r\)点冲到\(l\)点时,突破不了\(l\),从\(l\)点冲到 ...
- P1057 传球游戏——小学生dp
P1057 传球游戏 设f[i][j]为第i次传到j的方案数: f[0][1]=1; 单独处理开头和结尾: #include<cstdio> #include<cstring> ...