我正在为ES2015类编写一个构造函数,它将接受Map或普通的旧JavaScript对象。如果输入参数是Map,构造函数将只存储它,但如果它是JS对象,它应该将它转换为Map,例如InputStream is = sock.getInputStream()
BufferedInputStream bis = new BufferedInputStream(is);
int nextByte;
StringBuilder sb = new StringBuilder();
while( (nextByte = bis.read()) != -1 ) {
sb.append(String.format("%02X ", nextByte));
}
。
我的问题是:如何安全地判断输入参数是Map还是Object?我可以测试一些特定于Map的方法,但是有更可靠和可读的方法吗?据我所知,没有地图相当于new Map(Object.keys(obj).map(k => [k, obj[k]]))
。
答案 0 :(得分:2)
const map = new Map()
,obj = {}
console.log(map instanceof Map) // true
console.log(obj instanceof Map) // false
此外,如果要将对象转换为地图,则可以使用Object.entries()
:
new Map(Object.entries(obj))
答案 1 :(得分:1)
您可以使用instanceof Map
来测试它是否为地图