2016-09-08 53 views
1

我正在爲ES2015類寫一個構造函數,它將接受Map或普通的舊JavaScript對象。如果輸入參數是一個Map,構造函數將會存儲它,但是如果它是一個JS對象,它應該通過new Map(Object.keys(obj).map(k => [k, obj[k]]))將它轉換爲Map。確定變量是ES2015 Map還是普通的舊JavaScript對象

我的問題是:我怎麼能安全地告訴輸入參數是一個Map還是Object?我可以測試一些特定於Map的方法,但有沒有更可靠和更可讀的方法?據我所知,沒有地圖等效物Array.isArray

回答

1

您可以使用instanceof Map來測試,如果它是一個地圖

2

使用instanceof operator

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

此外,您還可以使用Object.entries()如果您想將對象轉換爲a地圖:

new Map(Object.entries(obj)) 
+3

Object.entries不是ES6。 – Bergi

相關問題