Mapまたは一般的な古いJavaScriptオブジェクトのいずれかを受け入れるES2015クラスのコンストラクタを作成しています。入力引数がMapの場合、コンストラクタはそれを保存するだけですが、JSオブジェクトの場合は、たとえばnew Map(Object.keys(obj).map(k => [k, obj[k]]))
を経由してマップに変換する必要があります。変数がES2015マップか通常の古いJavaScriptオブジェクトかを確認
私の質問は、入力引数がマップかオブジェクトかどうかを安全に知る方法はありますか?いくつかのMap固有のメソッドをテストすることはできますが、より信頼性が高く読みやすい方法がありますか?私が知る限り、Array.isArray
の地図に相当するものはありません。
const map = new Map()
,obj = {}
console.log(map instanceof Map) // true
console.log(obj instanceof Map) // false
また、あなたがオブジェクトを変換したい場合、あなたはObject.entries()
を使用することができます。
'Object.entries'はES6ではありません。 – Bergi