【发布时间】: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"相同。