当前位置: 首页 > 知识库问答 >
问题:

Javascript中对象和映射对象之间的区别是什么?[副本]

万俟招
2023-03-14
let m = new Map();

let obj = {};

let keyString = 'a string';
let keyObj = {};
let keyFunc = function() {};

obj[keyObj] = 'object inside object as keys!';
obj[keyFunc] = function() {}


m.set(keyObj, 'object');
m.set(keyFunc, 'function');


console.log(typeof obj[keyObj]); // type = string
console.log(typeof obj[keyFunc]); // type = function 
console.log(typeof m.get(keyObj)); // type = string 
console.log(typeof m.get(keyFunc)); // type = string 
console.log(m.get(keyObj)) //  object
console.log(m.get(keyFunc)) //  function

那么地图和物体有什么区别呢?map还将键类型转换为字符串。

共有1个答案

雍光远
2023-03-14

Map是一种数据结构,有助于以成对的形式存储数据。该对由唯一键和映射到该键的值组成。这有助于防止口是心非。

对象遵循与map相同的概念,即使用键值对存储数据。但在某些情况下,有一些细微的差异使map表现得更好。

一些基本差异如下:

  • 在Object中,key字段的数据类型被限制为整数、字符串和符号。而在Map中,key字段可以是任何数据类型(整数,数组,甚至对象!)
  • 在Map中,元素的原始顺序被保留。这在对象的情况下是不正确的。
  • Map是一个对象的实例,反之亦然。
 类似资料:
  • 问题内容: 我是JSON和JavaScript对象的新手。 有人可以解释JSON和JavaScript对象之间的区别吗? 它们有什么用? 这个比那个好吗?还是取决于情况? 什么时候使用哪个,在什么情况下? 为什么首先创建JSON?它的主要目的是什么? 有人可以举例说明何时应该使用JSON而不是JavaScript对象,反之亦然吗? 问题答案: 首先,您应该知道什么是JSON: 它是与 语言无关的

  • 问题内容: 我正在使用Eclipse来帮助我清理一些代码以正确使用Java泛型。大多数时候,它在推断类型方面做得非常出色,但是在某些情况下,推断类型必须尽可能地通用:对象。但是Eclipse似乎给了我一个选择,可以选择对象类型还是“?”类型。 那么两者之间有什么区别? 和 问题答案: 匹配项的实例,但不是。假设您要编写一个接受Strings到任何内容的映射的方法:如果您要编写 您无法提供。如果你写

  • 问题内容: 谁能举例说明Javascript对象和JSON对象之间的区别? 问题答案: Javascript 对象 是Javascript 中的数据类型-仅在Javascript中才有意义。通常,您会看到这样的Javascript 对象文字 : JSON 字符串 是一种数据交换格式,它只不过是一串以特定方式格式化的字符(为了使不同的程序相互通信)。因此,它可以存在于Javascript或其他语言中

  • 问题内容: 后者是否仅引用由自定义构造函数创建的非原始函数对象(例如,var bird1 = new Bird();)? 问题答案: 这两个术语在ECMAScript规范中定义: 本机对象 ECMAScript实现中的对象,其语义由此规范而不是由主机环境完全定义。 注:本规范中定义了标准本机对象。一些本地对象是内置的。其他的可以在执行ECMAScript程序的过程中构造。 宿主对象 主机环境提供的

  • 本文向大家介绍rest参数和Javascript中的arguments对象之间有什么区别?,包括了rest参数和Javascript中的arguments对象之间有什么区别?的使用技巧和注意事项,需要的朋友参考一下 休息参数 使用rest参数,您可以将多个参数表示为数组。ES6带来了rest参数,以简化开发人员的工作。对于参数对象,其余参数由三个点…表示,并位于参数之前。 参数对象 JavaScr

  • 问题内容: 您能否简单地解释一下Transfer对象和Domain对象之间的区别?如果您可以举一个Java示例,那就太好了。 问题答案: DTO没有任何逻辑。他们只有字段(州)。在将数据从一个层/子系统传输到另一层/子系统时使用它们 域对象可以具有逻辑(取决于您使用的是域驱动设计还是贫乏的数据模型),并且它们通常与数据库结构相关。 如果使用贫乏的数据模型(即您的域对象没有任何逻辑),则DTO和域对