| 属性/方法 | 用途 |
| :-- | :-- |
| size属性
| 返回map结构的成员个数 map.size
|
| Map.prototype.set(key, value)
| 添加map值,整个Map结构(适合链式)如果已有key就覆盖,没有就新建 |
| Map.prototype.get(key)
| 获取value值,没有就undefined |
| Map.prototype.has(key)
| 判断是否存在Map对象之中,返回一个布尔值 |
| Map.prototype.delete(key)
| 删除某个键,返回一个布尔值 |
| Map.prototype.clear()
| 清除所有成员,没有返回值 |
| Map.prototype.keys()
| 返回遍历的键名 |
| Map.prototype.values()
| 返回遍历的键值 |
| Map.prototype.entries()
| 返回遍历的所有成员 |
| Map.prototype.forEach()
| 遍历Map的所有成员 |
const map = new Map([
[‘F’, ‘no’],
[‘T’, ‘yes’],
]);
for (let key of map.keys()) {
console.log(key);
}
- Map 的遍历顺序就是插入顺序
map各种转换应用
-
map转为数组
使用扩展运算符(...)
-
数组转为map
将数组传入 Map 构造函数,就可以转为 Map
-
map转为对象
-
如果所有的key全是字符串,就可以无损转换
-
如果key有其他类型key值就会被转换为字符串
-
利用循环重新赋值
- 对象转为map
-
Object.entries()
-
利用循环往里加
- map转为JSON:(JSON.stringify)
-
如果key值全是字符串,就和对象转换为json一样
-
如果key值有其他类型,就可以转换为数组类型的json
- JSON转为map
-
正常情况下,所有键名都是字符串(JSON.parse)
-
Map 转为数组 JSON 的逆操作
回到顶部 目录
WeakMap与Map的区别
相同点:结构类似,都是键值对的集合
不同点:
-
WeakMap只接受对象作为键名(null除外)
-
WeakMap的键名所指向的对象,不计入垃圾回收机制(key值弱引用)
语法
// 无参
const ws = new WeakMap();
const key = {foo: 1};
wm1.set(key, 2);
wm1.get(key) // 2
// WeakMap 也可以接受一个数组,
// 作为构造函数的参数
const k1 = [1, 2, 3];
const k2 = [4, 5, 6];
const wm2 = new WeakMap([[k1, ‘foo’], [k2, ‘bar’]]);
wm2.get(k2) // “bar”
弱引用
正常情况下的:
const obj1 = document.getElementById(‘foo’);
const obj2 = document.getElementById(‘bar’);
const arr = [
[obj1, ‘foo 元素’],
[obj2, ‘bar 元素’],
];
如果我们不需要obj1和obj2的时候,只能手动删除,如果不删除就有可能照成内存泄露
解决方法:
const wm = new WeakMap();
const obj = document.getElementById(‘foo’);
wm.set(obj, ‘我是弱引用’);
wm.get(element) // “我是弱引用”
回到顶部 目录
方法
| 属性/方法 | 用途 |
| :-- | :-- |
| WeakMap.prototype.set(key, value)
| 添加成员 |
| WeakMap.prototype.get(key)
| 查询value |
| WeakMap.prototype.delete(key)
| 删除成员 |
| WeakMap.prototype.has(key)
| 判断是否存在,返回一个布尔值 |
部署私有属性
const _counter = new WeakMap();
const _action = new WeakMap();
class Countdown {
constructor(counter, action) {
_counter.set(this, counter);
_action.set(this, action);
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!**
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!