javascript - 确定变量是 ES2015 Map 还是普通的旧 JavaScript 对象

标签 javascript ecmascript-6

<分区>

我正在为 ES2015 类编写构造函数,它将接受 Map或者一个普通的旧 JavaScript 对象。如果输入参数是一个 Map,构造函数将只存储它,但如果它是一个 JS 对象,它应该将它转换为一个 Map,例如,通过 new Map(Object.keys(obj).map(k => [k, obj[k]])).

我的问题是:如何安全地判断输入参数是 Map 还是 Object?我可以测试一些特定于 Map 的方法,但是否有更可靠和可读性更高的方法?据我所知,没有与 Array.isArray 等效的 Map。

最佳答案

使用 instanceof operator :

const map = new Map()
     ,obj = {}
console.log(map instanceof Map) // true
console.log(obj instanceof Map) // false

此外,您可以使用 Object.entries()如果你想将对象转换为 map :

new Map(Object.entries(obj))

关于javascript - 确定变量是 ES2015 Map 还是普通的旧 JavaScript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39398752/

相关文章:

javascript - ES6 在当前 Promise 完成后无法返回新的 Promise

javascript - 将字符串转换为字符,然后检查每个字符,像乱写乱画的行为

javascript - 引用错误 : $traceurRuntime is not defined (in angularjs app)

javascript - 调用在 (xul) 浏览器元素中定义/链接的 javascript 函数

javascript - xQuery 到 JavaScript 需要多个文件

javascript - Select2 - 从 15k 单元格数组创建自动完成选择框

javascript - JS 类、静态字段和命名空间

Javascript ES6 传播未定义的数组...[,,]

javascript - 如何标准化日期年份,即从 2 位数转换为 4 位数 Javascript

javascript - 在苹果 iPhone 上,点击通知会捕获什么事件?