Javascript中的对象和地图对象有啥区别? [复制]

Posted

技术标签:

【中文标题】Javascript中的对象和地图对象有啥区别? [复制]【英文标题】:what is difference between object and map object in Javascript? [duplicate]Javascript中的对象和地图对象有什么区别? [复制] 【发布时间】:2020-09-28 14:55:18 【问题描述】:

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 还将键类型转换为字符串。

【问题讨论】:

"map 还将键类型转换为字符串。" 它没有!它通过设计明确地保留它们的类型。 typeof m.get(keyObj) 返回键的值。与typeof "object"相同。 Showcasing preserved key types 【参考方案1】:

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

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

几个基本区别如下:

在 Object 中,key-field 的数据类型限制为整数, 字符串和符号。而在 Map 中,key-field 可以是任何 数据类型(整数、数组,甚至是对象!) 在地图中,元素的原始顺序被保留。这不是 如果是对象,则为 true。 地图是对象的一个​​实例,但反之亦然。

【讨论】:

"在 Object 中,key-field 的数据类型仅限于整数、字符串和符号。" - 只有字符串和符号。您不能将数字作为键,它会被转换。在少数情况下,“数字”键的处理方式不同,但它们仍然是包含非负整数的 字符串

以上是关于Javascript中的对象和地图对象有啥区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 中的字符串原语和字符串对象有啥区别?

javascript中的window对象是html对象还是页面元素对象还是内置对象呀,他们有啥区别

JSON 和 JavaScript 对象有啥区别? [复制]

JavaScript 中的窗口、屏幕和文档有啥区别?

JavaScript 中的 window.location 和 document.location 有啥区别?

JavaScript 中的 window.location 和 document.location 有啥区别?