首页 > 其他分享 >Object和Map的区别?

Object和Map的区别?

时间:2022-09-19 17:33:19浏览次数:62  
标签:区别 Map obj map Object key const

相同点

二者都是以key-value的形式对数据进行存储;

不同点

1.key的数据类型范围不同

Object:可以作为key的有:number,string,以及es6里面的symbol;
Map:js目前存在的数据类型均可以作为key;

2.key的顺序

Object: 如果对象的key中同时存在number string symbol 三种类型的时候,通过Object.keys得到的顺序是数字(升序) -> string(symbol)以创建的顺序;
Map: key以声明的顺序进行排序;

3.创建方式不同

Object:创建方式
const obj1 = new Object()
const obj2 = {}
const obj3 = Object.create({})
Map:创建方式:
const map = new Map();

4.key的调用方式不同

通过key取值:
Object:可通过 . 或 []
Map:只能用原生的get方法进行调用;
判断是否有某个属性
Object:'a' in obj;判断obj中是否有a这个属性;
Map:map.has('a');判断map中是否有a这个属性;

 5.设置属性的方式不同

Object:
1.obj.a = 1;
2.obj['a'] = 1;
Map:js目前存在的数据类型均可以作为key;
1.map.set('a',1)

 6.删除key的方式

Object: 自身没有删除属性的方法;一般删除对象属性的方式: delete obj.a
Map: map.delete('a') ----删除a属性;
     map.clear() ----删除所有的属性;

7.获取size

Object: 通过Object.keys(obj) 返回一个数组,通过获取数组的长度来获取size;
Map: 自身带有size属性;map.size,size属性无法修改;

 

8.Iterating(迭代)

Object: 不可以
Map: 可以;

如何判断一个数据是否可以迭代的方式
typeof [][Symbol.iterator] //function
typeof new Map()[Symbol.iterator] //function
typeof {}[Symbol.iterator]  //undefined
typeof 1[Symbol.iterator] //undefined

 

9.JSON操作

Object: 支持JSON.stringify和JSON.parse的操作;
Map: 不支持;

 

10.this不同

const f = function(){ console.log(this) }
Object: 
        const obj = {fn:f}
Map: 
        const map = new Map()
        map.set('fn',f)
        
obj.fn() //指向obj
map.get('fn')() //取决于函数的调用者;

如有错误.欢迎指正

 

标签:区别,Map,obj,map,Object,key,const
From: https://www.cnblogs.com/sexintercourse/p/16708399.html

相关文章

  • Map底层实现
    Map底层实现functionMyHashMap(){this.init();}MyHashMap.prototype.init=function(){varstore=newArray(8);for(vari=0;i<store.length;i+......
  • 【自动化测试】nth-of-type与nth-child的区别
    nth-of-type、nth-child使用概念nth-of-type某个元素:nth-of-type(n)这个CSS伪类是针对具有一组兄弟节点的标签,用n来筛选出在一组兄弟节点的位置。nth-child某个......
  • NOI与NOIP的区别
    NOI:全国青少年信息学奥林匹克(NOI)是国内包括港澳在内的省级代表队最高水平的大赛,自1984年至今,在国内包括香港、澳门组织竞赛活动。每年经各省选拔产生5名选手(其中一名是女选......
  • vue-baidu-map 搜索定位
    1、引入vue-baidu-map插件npminstallvue-bai-map--save2、注册(我这里是采用全局注册main.js)ak是你自己申请的3、html4、数据定义5、JS......
  • Map底层实现、Map-Object性能对比
    Map底层实现、Map-Object性能对比Map是一个键值对的集合,和Object类似。Map做为构造函数,可以通过全局对象获取到。需要通过new操作创建实例对象,直接调用会报错。M......
  • BIO和NIO的区别
    摘要:关于BIO和NIO的理解最近大概看了ZooKeeper和Mina的源码发现都是用JavaNIO实现的一、简介BIO:同步阻塞式IO,服务器实现模式为一个连接一个线程,即客户端 有连接请......
  • 河北稳控科技几种振弦采集仪的主要区别是什么?
    河北稳控科技几种振弦采集仪的主要区别是什么?VH系列属于手持系列,多用于振弦传感器现场单次测量使用;VH501TC采集读数仪,设备是专用的多类型传感器手持式读数仪,主测传感类型为......
  • 【自动化测试】xpath、css使用及区别
    CSS和XPATH的功能对比对比项定位方式CSSXPATH常规属性id#id_keyword//*[@id=‘id关键字‘]常规属性class.class_name//*[@class=‘class属性名‘]......
  • Redis作为缓存和作为数据库的区别
    Redis又被叫做Nosql,非关系型数据库,由于Redis作用于内存上,所以又可以被当作是缓存,那么Redis当作缓存和数据库的区别就是:技术服务于业务逻辑,所以,选择Redis作为什么,还是要根......
  • Pest24: A large-scale very small object data set of agricultural pests for multi
    1.论文主要工作建立了一个包含24类典型虫害,并且使用了几种最先进的深度学习检测方法(RCNN、SSD、YOLOv3、CascadeR-CNN)来检测数据集中的害虫,从多个方面分析了数据集,发现了......