最新要闻
- 要闻:官方:CBA公司及各俱乐部将深刻汲取教训
- 【播资讯】酱香科技过去式!中国移动市值超越贵州茅台成A股股王:加速千兆宽带
- 为五一假期调休:本周要上六天班 别忘定周日闹钟
- 硬核!马斯克母亲获得荣誉博士学位:目前经营一家营养企业
- iPhone 11用户换Redmi Note 12 Turbo:妥妥的体验升级 再也不买苹果了
- 每日观察!余承东称2025年是汽车行业分水岭 专家:淘汰赛刚刚开始
- 今日看点:【创新突破 产业突围】周振宇带队前往陕西西安开展招商考察活动
- 全球热消息:小米13 Ultra官图公布:传承徕卡M系列相机设计 支持IP68
- 世界新消息丨埃安高管:特斯拉不是不能战胜 Hyper GT全面超越Model 3
- 简讯:2TB 1049元 1TB不到600:三星SSD/内存降价不买要涨价 国产存储顶上
- 售价17万的特斯拉要来了:谁开心、谁恐慌?
- 每日热点:ChatGPT之父辟谣:并未秘密训练GPT-5 短期内也不会
- ST华英说明申请撤销其他风险警示相关情况
- 当前热文:明晚发布!小米13 Ultra外观正式揭晓:更像相机了
- 全球热头条丨毁经典!《海贼王》真人剧集口碑扑街:日漫原著粉在线声讨
- 全球讯息:余承东预言:2025年是汽车行业分水岭、像2013年的手机行业
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
世界滚动:JS中Map、WeakMap和Object的区别
JavaScript中的Map、WeakMap和Object都是用于存储键值对的数据结构:
1. Map:Map是一种新的数据结构,它允许使用任何数据类型(包括对象和基本数据类型)作为键。Map的一些特性包括:
(相关资料图)
- 保持键的插入顺序:当遍历Map时,键值对会按照插入顺序返回。- 键可以是任意类型:与Object不同,Map的键可以是任意类型的值,如对象、函数或基本类型。- 大小可获取:可以通过Map的size属性轻松获取Map的大小。
2. WeakMap:WeakMap是一种特殊类型的Map,它的键只能是对象,并且不会阻止垃圾回收。WeakMap的一些特性包括:
- 键必须是对象:与Map不同,WeakMap的键必须是对象类型。- 无法阻止垃圾回收:当WeakMap中的某个键值对的键不再被引用时,该键值对会被自动删除。这使得WeakMap在处理潜在的内存泄漏问题时非常有用。- 不可枚举:WeakMap没有方法可以获取其所有键值对,因此不能对其进行遍历。- 大小不可获取:WeakMap没有size属性,因此无法直接获取其大小。
3. Object:Object是JavaScript中最常用的数据结构。Object用于存储键值对,但它有一些局限性。Object的特性包括:
- 键必须是字符串或Symbol:Object的键只能是字符串或Symbol类型。如果使用其他类型作为键,它们会被自动转换为字符串。- 无法保证键的顺序:虽然大多数现代JavaScript引擎会按照插入顺序存储键,但这并非是标准规定的行为。- 原型链:Object具有原型链,这可能会导致属性名称冲突。- 无法直接获取大小:Object没有size属性,因此要获取Object的大小需要手动计算。
下面是Map、WeakMap和Object之间的区别:
1. 键的类型:
Map的键可以是任何类型,WeakMap的键必须是对象类型,而Object的键必须是字符串或Symbol类型。
2. 垃圾回收:
Map中的键是强引用,即使键对象没有其他引用,也不会被垃圾回收。而WeakMap中的键是弱引用,当键对象没有其他引用时,可能会被垃圾回收。Object中的属性是强引用,即使没有其他引用,也不会被垃圾回收。
3. 可枚举性:
Object的属性是可枚举的,可以使用for-in或Object.keys()等方法来遍历属性。而Map和WeakMap中的键是不可枚举的。
4. 方法和操作:
Object具有一些特定于对象的方法和操作,例如Object.keys()和Object.values()等。Map和WeakMap提供了一些特定于映射的方法和操作,例如Map.has()和WeakMap.delete()等。
5. 继承:
Object具有原型继承,即属性可以从原型链中继承。而Map和WeakMap不具有原型继承,它们是独立的数据结构。
使用场景:
- 当需要使用非字符串键时,可以使用Map。- 当需要存储与对象相关联的元数据时,可以使用WeakMap。- 当需要存储对象属性时,可以使用Object。- 当需要避免内存泄漏和手动释放内存时,可以使用WeakMap。- 当需要遍历和操作属性时,可以使用Object。
下面是一些使用Map、WeakMap和Object的示例:
1. 使用Map:
// 创建一个Mapconst map = new Map();// 添加键值对map.set("name", "John");map.set(42, "Age");map.set({ key: "objectKey" }, "This is an object key");// 获取值console.log(map.get("name")); // 输出:John// 遍历Mapmap.forEach((value, key) => { console.log(`${key}: ${value}`);});// 输出:// name: John// 42: Age// [object Object]: This is an object key// 获取Map大小console.log(map.size); // 输出:3
2. 使用WeakMap:
// 创建一个WeakMapconst weakMap = new WeakMap();// 创建对象作为键const obj1 = { id: 1 };const obj2 = { id: 2 };// 添加键值对weakMap.set(obj1, "Object 1");weakMap.set(obj2, "Object 2");// 获取值console.log(weakMap.get(obj1)); // 输出:Object 1// 无法遍历WeakMap或获取其大小
3. 使用Object:
// 创建一个Objectconst obj = {};// 添加键值对obj["name"] = "John";obj[42] = "Age";obj[{ key: "objectKey" }] = "This is an object key"; // 这里键会被转换为字符串// 获取值console.log(obj["name"]); // 输出:John// 遍历Objectfor (const key in obj) { console.log(`${key}: ${obj[key]}`);}// 输出:// name: John// 42: Age// [object Object]: This is an object key// 获取Object大小(需要手动计算)console.log(Object.keys(obj).length); // 输出:3
综上所述,Map、WeakMap和Object都是JavaScript中用于存储键值对的数据结构,它们在键类型、垃圾回收、可枚举性、方法和操作、以及继承等方面存在一些区别,适用于不同的场景。
关键词:
-
世界滚动:JS中Map、WeakMap和Object的区别
JavaScript中的Map、WeakMap和Object都是用于存储键值对的数据结构:1 Map:Map是一种新的数据结构,它...
来源: 世界滚动:JS中Map、WeakMap和Object的区别
从此告别写 SQL!DataLeap 帮你零门槛完成“数据探查”
要闻:官方:CBA公司及各俱乐部将深刻汲取教训
【播资讯】酱香科技过去式!中国移动市值超越贵州茅台成A股股王:加速千兆宽带
为五一假期调休:本周要上六天班 别忘定周日闹钟
硬核!马斯克母亲获得荣誉博士学位:目前经营一家营养企业
iPhone 11用户换Redmi Note 12 Turbo:妥妥的体验升级 再也不买苹果了
每日观察!余承东称2025年是汽车行业分水岭 专家:淘汰赛刚刚开始
微商城怎么注册?微商城和小程序商城有什么区别?
东莞电信的DNS是多少?东莞电信套餐资费一览表2023
联想K900跑分是多少?联想K900搭配的CPU是哪个厂商的?
ipad mini2可以升级到什么版本?ipad mini2参数配置
电信卡欠费多久会自动销户?电信卡用的手机制式是什么?
每日热文:MySQL 处理大数据表的 3 种方案,写的太好了,建议收藏!!
【全球速看料】Spring AOP官方文档学习笔记(二)之基于注解的Spring AOP
全球快资讯:exec 函数族 - 进程替换
今日看点:【创新突破 产业突围】周振宇带队前往陕西西安开展招商考察活动
全球热消息:小米13 Ultra官图公布:传承徕卡M系列相机设计 支持IP68
世界新消息丨埃安高管:特斯拉不是不能战胜 Hyper GT全面超越Model 3
简讯:2TB 1049元 1TB不到600:三星SSD/内存降价不买要涨价 国产存储顶上
售价17万的特斯拉要来了:谁开心、谁恐慌?
每日热点:ChatGPT之父辟谣:并未秘密训练GPT-5 短期内也不会
ST华英说明申请撤销其他风险警示相关情况
当前热文:明晚发布!小米13 Ultra外观正式揭晓:更像相机了
全球热头条丨毁经典!《海贼王》真人剧集口碑扑街:日漫原著粉在线声讨
全球讯息:余承东预言:2025年是汽车行业分水岭、像2013年的手机行业
苹果将于6月推出多款新品!苹果表将迎史上最大的软件更新
我国自研高性能兆瓦级PEM电解水制氢装备发布:国产化率超90%
环球即时看!维生素ABCDE的作用及功能主治(维生素abcde的作用及功能)
环球视讯![Flink] Flink作业报错:Caused by: The connector is trying to read binlog startin
每日热闻!央行圆桌汇:4月17日
今日报丨《百度智能驾驶开放白皮书》发布 面向车企开放四大能力
今头条!特斯拉中国工厂待遇如何?普通工人月薪1万块 父母看病都能报销
女子借朋友摩托车无证驾驶 在隧道“狂飙”拍抖音 朋友也惨了
世界快讯:真人版《小美人鱼》国内将上映!黑小美人鱼喊话自己可爱:我爱的人而战
全球百事通!全系800V高压、一体化铝压铸车身!小鹏SEPA 2.0扶摇架构发布
比原版多50分钟!真人版《小美人鱼》片长超2小时
热议:SoapUI使用教程-九五小庞
实时焦点:债市观察:做多情绪占优 收益率曲线平坦化下移
【读财报】制造主题基金2022年业绩透视:广发基金领亏 摩根基金净值跌幅最大
苹果设备不断要求输入Apple ID密码!客服回应:可尝试修改密码
环球今日讯!猿辅导被举报单日加班超6小时:上厕所需报备 时薪仅17元
当前快报:2022年全国共登记计算机软件著作权183.5万件:比十年前高12倍
全球快报:国内成品油零售价迎今年最大涨幅 加满多花70元:沙特俄罗斯减产 国际油价大涨
环球新资讯:卢谈G1:我们没有太多容错空间&不是试探性比赛 必须全力以赴
环球观点:学系统集成项目管理工程师(中项)系列08a_合同管理(上)
杭州萧山国际机场T3航站楼出现冒烟现象:无人受伤
天天视讯!今晚开始!国内成品油零售价迎今年最大涨幅:加满一箱多花20元
【全球报资讯】考研数据结构模板:顺序表、链表、栈、队列
世界热资讯!王一博、梁朝伟主演电影《无名》结束公映:85天票房9.31亿
热讯:RTX 4060 Ti、RTX 4060严重缩水:除了显存 还有一点没法看
天天视点!人类真是动物界最优秀的长跑运动员?别闹了
环球快报:一款车发布两年还没影!长城怎么这么难产?
当前聚焦:机械硬盘卖不动了 销量暴跌35%!三大品牌抱团哭惨
三代同堂!46岁皇马传奇古蒂升级当爷爷,22岁网红大女儿产下一子
天天关注:Node.js的安装以及配置npm全局模块路径和缓存路径
使用Sentieon加速甲基化(WGBS)分析
世界短讯!【明日方舟】4周年活动更新预测(第二版)
当前头条:4年不卡的骁龙8+旗舰来了!一加Ace 2原神限定版明天发:抢到赚到
全球视点!iOS 17控制中心将有大变化:有一批老设备不支持 将被淘汰
AMD、NVIDIA新一代显卡全部破发!次旗舰双双最惨
环球热议:扎实打牢数据结构算法根基,从此不怕算法面试系列之005 week01 02-05 使用自定义类测试我们前面实现的支持泛型的线性查找法
如何获取软件包的下载地址 wget curl
基于GPT3的代码编辑器Cursor试用-你的智能代码编辑助手
每日快播:React onBlur回调中使用document.activeElement返回body解决方案
世界观察:民营天龙二号液体火箭首飞成功:还隐藏了一个中国第一
天天看热讯:不知道这几点!你买电动牙刷就是花冤枉钱
世界热资讯!热泵干衣机被严重低估了!浑身都是宝
环球快播:致聂红的一封信
环球快报:2023上海车展丨这些即将首发的热门新车你一定不要错过!
云南泼水节白天是热闹夜晚是浪漫:市民游客共狂欢
员工回应公司发布高薪招聘老板公告:不是开玩笑
热推荐:java -- File类和递归
贾跃亭憋了九年的车终于量产?结果 又一张大饼!
环球快报:四边等宽的鸿蒙手机来了!华为nova 11明天发
潍坊风筝节放飞打工人的心声:引发网友热议
Intel鸡血驱动暴涨63%!Arc A750性价比秒杀RTX 3060 72%!
当前最新:天舟六号飞船、长征七号火箭抵达文昌!五次发射 100%成功
山东泰山队vs上海申花首发出炉:四外援先发,韩镕泽镇守球门
每日热讯!“泼水节被撕扯雨衣”女生发声:很崩溃
世界快报:众人狂欢!泼水节连狗路过都得淋两桶水再走
贝贝健电蚊香液到手14.9元:驱赶蚊虫神器 夏天必备
全球信息:超级SSD 21合一组成168TB!价格直奔20万元
全球视点!扎实打牢数据结构算法根基,从此不怕算法面试系列之001 week01 02-01 什么是算法?
焦点快报!女子花2万为猫移植鱼皮被网暴 本人:救治一半不可能放弃
全球热头条丨女子澄清妈妈做月嫂存款482万为虚构:觉得好玩就发了 现在很后悔
环球热文:养男三不碰,养女三讲究,教出来的孩子才能立足社会!
世界信息:Air724UG开发板串口教程
首发宁德时代麒麟电池 极氪009 ME版正式交付:根治续航焦虑
环球百事通!超智驾轿跑SUV!小鹏G6将亮相上海车展
学系统集成项目管理工程师(中项)系列06b_信息系统安全管理(下)
【打怪升级】【微服务】聊聊微服务拆分设计
微头条丨《世界尽头的咖啡馆》-热衷于有意义的事,追求真我。
31-触发器01
2023年4月自考《人力资源管理(一)》真题答案汇总
卡普空更新出尔反尔:突然移除《生化危机2/3》Steam版光追
世界速看:奥利奥礼包到手39元:夹心饼干、巧脆卷全都有
环球看点!Vulnhub Fall Walkthrough
环球消息!苹果在线服务又出Bug:用户被迫反复输入Apple ID
每日视点!余承东罕见认错:还连甩五项重磅技术更新