es6提供了一个Map类,这是新增的一个数据结构,用起来有点像Object,这二者到底有什么区别呢?
Object本质上是哈希结构的键值对的集合,它只能用字符串、数字或者Symbol等简单数据类型当作键,这就带来了很大的限制。
比如以下这个例子,我想将dom节点作为键,但是由于对象只接受字符串作为键名,所以键被自动转为字符串[object HTMLDivElement],这显然不是我们想要的。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Map</title>
</head>
<body>
<div id="cont">
</div>
</body>
</html>
<script>
let cont = document.getElementById('cont')
let obj = {}
obj[cont] = 'hello,world'
console.log(obj)//[object HTMLDivElement]: "hello,world"
</script>
Map类继承了Object,并对Object功能做了一些拓展,Map的键可以是任意的数据类型。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
&l