确定变量是ES2015 Map还是普通的旧JavaScript对象
我正在为ES2015类编写一个构造函数,该类将接受一个或一个普通的旧JavaScript对象。如果输入参数是一个映射,构造函数将只存储它,但是如果它是一个JS对象,它应该将它转换成一个映射,比如说,通过确定变量是ES2015 Map还是普通的旧JavaScript对象,javascript,ecmascript-6,Javascript,Ecmascript 6,我正在为ES2015类编写一个构造函数,该类将接受一个或一个普通的旧JavaScript对象。如果输入参数是一个映射,构造函数将只存储它,但是如果它是一个JS对象,它应该将它转换成一个映射,比如说,通过newmap(object.keys(obj.Map)(k=>[k,obj[k]]) 我的问题是:如何安全地判断输入参数是映射还是对象?我可以测试一些特定于地图的方法,但有没有更可靠、更可读的方法?据我所知,没有与数组等效的映射。isArray您可以使用实例of Map来测试它是否是映射使用:
newmap(object.keys(obj.Map)(k=>[k,obj[k]])
我的问题是:如何安全地判断输入参数是映射还是对象?我可以测试一些特定于地图的方法,但有没有更可靠、更可读的方法?据我所知,没有与
数组等效的映射。isArray
您可以使用实例of Map
来测试它是否是映射使用:
const map=new map()
,obj={}
console.log(map instanceof map)//true
console.log(obj instanceof Map)//false
对象。条目
不是ES6。