Map是一种叫做字典的数据结构,
字典-----是一些元素的集合。每个元素有一个称作key 的域,不同元素的key 各不相同
size
const map = new Map();
map.set('name', 'li');
map.set('age', 18);
map.size // 2
set()
设置键名key对应的键值为value,然后返回整个 Map 结构
如果key已经有值,则键值会被更新,否则就新生成该键
同时返回的是当前Map对象,可采用链式写法
const map = new Map();
const fn = () => {};
map.set('name', 'li');
map.set('age', 18);
map.set('fn', fn);
map.set(1, 'a').set(2, 'b').set(3, 'c') // 链式操作
get()
get方法读取key对应的键值,如果找不到key,返回undefined
const map = new Map();
map.set('name', 'li');
map.set('age', 18);
map.set('fn', fn);
map.get('name'); // li
map.get('name'); // 18
has()
has方法返回一个布尔值,表示某个键是否在当前 Map 对象之中
const map = new Map();
map.set('name', 'li');
map.set('age', 18);
map.set('fn', fn);
map.has('name'); // true
map.has('sex'); // false
delete()
delete方法删除某个键,返回true。如果删除失败,返回false
const map = new Map();
map.set('name', 'li');
map.set('age', 18);
map.set('fn', fn);
map.delete('name');
map.delete('sex'); // false
clear()
clear方法清除所有成员,没有返回值
const map = new Map();
map.set('name', 'li');
map.set('age', 18);
map.set('fn', fn);
map.size // 3
map.clear();
map.size // 0
例子 (进阶)
const action = new Map([
['A',
function () {
console.log("A")
}
],
['B',
function () {
console.log("B")
}
],
['C',
function () {
console.log("C")
}
]
])
function onTabClick(type) {
const car = action.get(type)
car && car.call(this);
}
当 type == 'A'
console.log(car)
// ƒ () {
// console.log("A")
// }
使用 car.call(this) 调用函数 // A
proxy 代理
proxy 代理的是一个对象,该对象被代理后我们就不能直接访问,需要通过代理访问。
创建代理
new Proxy(obj,handler);
代理有两个参数
obj:表示要拦截的对象。
handler:是一个对象,用来制定拦截行为;
例子:
const obj= {nama:"小帅",age:18};
const handler = {
get(target, key, value){
console.log("收集数据",target, key);
return target[key]; // 返回值
},
set(target, key, value){
console.log("派发数据",target, key, value);
tatget[key] = value; // 设置值
return true
}
}
创建代理
const proxys = new Proxy(obj,handler);