new Map()使用


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);
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值