Map和Object的区别

Map和Object在JavaScript中虽然类似,但存在显著区别。Map的键可以是任意类型,解决了同名属性碰撞问题;Map可迭代,支持for...of循环;能获取长度;保持元素插入顺序;并且支持展开语法。相比之下,Object的键仅限于字符串,不支持迭代,无法直接获取长度,无顺序保证,也不支持直接展开。
摘要由CSDN通过智能技术生成

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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值