2016-09-08 2 views
1

Map 또는 일반 오래된 JavaScript 객체를 사용할 수있는 ES2015 클래스의 생성자를 작성하고 있습니다. 입력 인수가 Map 인 경우 생성자는이를 저장하지만 JS 객체 인 경우 new Map(Object.keys(obj).map(k => [k, obj[k]]))을 통해 Map으로 변환해야합니다.변수가 ES2015 Map인지 일반 JavaScript 객체인지 확인하십시오.

내 질문은 : 어떻게 안전하게 입력 된 인수가지도 또는 개체인지 여부를 말할 수 있습니까? 몇 가지 맵 관련 메소드를 테스트 할 수 있지만 더 안정적이고 읽기 쉬운 방법이 있습니까? 제가 말할 수있는 한, Array.isArray에 해당하는지도는 없습니다.

답변

2

사용 인 경우 테스트 instanceof Map를 사용할 수있는 instanceof operator :

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

, 당신이 객체를 변환 할 경우 Object.entries()을 사용할 수 있습니다 지도 :

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

'Object.entries'는 ES6이 아닙니다. – Bergi

관련 문제