首页 > 其他分享 > object 和map 的区别

object 和map 的区别

时间:2022-10-06 10:00:41浏览次数:37  
标签:区别 map Object obj Map object key const

相同点:
二者都是以key-value形式对数据存储
不同点;
key的数据类型范围不同
Object可以作为key的有String,Number,symbol
map:目前js的数据类型都可以作为key
key的顺序不同
Object:如果对象的key中同时存在String,Number,Symbol,通过Object,keys得到的顺序是Number(升序)-->String(symbol)(以创建的顺序)
map:key按声明的顺序进行排序
创建方式不同
Object:
const obj1=new Object()
const obj2={}
const obj3=Object.create({})
Map:
const map=new Map()
key值调用的方式不同
通过key取值:
Object:可通过 . 或 []
Map:只能用原生的get方法进行调用;
判断是否有某个属性
Object:'a' in obj;判断obj中是否有a这个属性;
Map:map.has('a');判断map中是否有a这个属性;
设置属性的方式不同
Object:
1.obj.a = 1;
2.obj['a'] = 1;
Map:js目前存在的数据类型均可以作为key;
1.map.set('a',1)
删除key的方式不同
Object: 自身没有删除属性的方法;一般删除对象属性的方式: delete obj.a
Map: map.delete('a') ----删除a属性;
map.clear() ----删除所有的属性;
获取size
Object: 通过Object.keys(obj) 返回一个数组,通过获取数组的长度来获取size;
Map: 自身带有size属性;map.size,size属性无法修改;
迭代
map: 拥有迭代器,可以通过for-of forEach去直接迭代元素,遍历顺序是确定的
object: 并没有实现迭代器,需要自行实现,不实现只能通过for-in循环去迭代,遍历顺序是不确定的
如何判断一个数据是否可以迭代的方式
typeof [][Symbol.iterator] //function
typeof new Map()[Symbol.iterator] //function
typeof {}[Symbol.iterator] //undefined
typeof 1[Symbol.iterator] //undefined
JSON操作
Object: 支持JSON.stringify和JSON.parse的操作;
Map: 不支持;
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,Object,obj,Map,object,key,const
From: https://www.cnblogs.com/qianduan-Wu/p/16757086.html

相关文章

  • ArcMap布局添加图表问题
    在ArcMap分析制图过程中,经常会产生一些图表,然而在布局中添加这些图表会发现一些意想不到的问题。问题重现将图表直接添加到布局会发现图表有黑底,这在我们布局出图中是......
  • 文件系统EXT3,EXT4和XFS的区别
    文件系统EXT3,EXT4和XFS的区别:1.EXT3(1)最多只能支持32TB的文件系统和2TB的文件,实际只能容纳2TB的文件系统和16GB的文件(2)Ext3目前只支持32000个子目录(3)Ext3文件系统使用32位......
  • python判断字符串,str函数isdigit、isdecimal、isnumeric的区别
    原始链接:https://www.cnblogs.com/guigujun/p/6133057.htmlpython判断字符串,str函数isdigit、isdecimal、isnumeric的区别s为字符串s.isalnum()所有字符都是数字或者字......
  • 方法区、永久代、元空间的区别
    上图为JVM运行时数据区。1、方法区:(逻辑上)是JVM的一个规范,所有虚拟机必须要遵守的。是JVM所有线程共享的,主要用于存储类的信息、常量池、方法数据、方法代码等。方法区逻......
  • 对于Servlet原理以及Mapping的五种映射和404页面的详解
    一.Servlet原理1,浏览器向web容器发送Http请求,我们这里用的web容器为tomcat。2.我们在Servlet里的protectedvoiddoGet(HttpServletRequestreq,HttpServletResponsere......
  • MyBatis的javaType和ofType的区别
      ofType是值映射到list集合中的类型,比如上面的children。当collection进行list集合映射是需要用ofType,也就是一对多的时候使用......
  • 性能测试jvm垃圾收集器G1和 CMS 的区别【杭州多测师】【杭州多测师_王sir】
    G1和CMS的区别平时工作中大多数系统都使用CMS,那么G1相对于CMS的区别在:1.G1在压缩空间方面有优势2.G1通过将内存空间分成区域(Region)的方式避免内存碎片问题3.......
  • map 随笔
    map是个非常好用的STL小面会演示map的几个函数一、赋值与查询#include<bits/stdc++.h>usingnamespacestd;map<int,int>mp;intmain(){ //赋值 mp[1]=1; mp[2]......
  • API 与 SDK 之间的区别
    很多人在软件开发中经常会分不清SDK与API,今天就来浅谈一下两者之间的区别。直白地说,SDK包含了API,是一套完整的,能完成更多功能的工具包,无论你想获取什么样的信息,SDK......
  • TCP和UDP的区别
    什么是TCP:TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。什么是UDP:UDP为应用程序提供了一种无需建立连接就可以发送封装的IP数据包的方法。TCP和UDP的......