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中的window对象是html对象还是页面元素对象还是内置对象呀,他们有啥区别
JSON 和 JavaScript 对象有啥区别? [复制]