프론트엔드/Javascript
Javascript - instanceof
0-SIK
2024. 10. 25. 21:20
728x90
instanceof란?
instanceof는 JavaScript의 연산자로, 어떤 객체가 특정 클래스나 생성자 함수의 인스턴스인지 검사할 때 사용됩니다.
사용법
object instanceof Constructor
- object: 검사할 대상(객체).
- Constructor: 해당 객체가 속하는지 확인할 클래스(또는 생성자 함수).
주요 특징
- 객체가 **해당 클래스(또는 생성자 함수)**로부터 생성되었거나, 프로토타입 체인에 존재하면 true를 반환합니다.
- 주로 에러 핸들링 시, 특정 오류 객체(TypeError, JsonWebTokenError 등)를 구분하는 데 사용합니다.
코드 해석
if (error instanceof jwt.JsonWebTokenError) {
return res.status(401).json({
success: false,
message: 'Not authorized - Invalid token',
});
} else (error) {
return res.status(500).json({
success: false,
message: 'Internal server error',
});
}
- error가 JWT 라이브러리에서 발생한 JsonWebTokenError 타입의 에러인지 검사합니다.
- 만약 JsonWebTokenError라면, 401 (Unauthorized) 상태 코드와 함께 유효하지 않은 토큰 메시지를 반환합니다.
- 그렇지 않은 경우, 500 (Internal Server Error) 상태 코드를 반환합니다.
왜 instanceof를 사용하는가?
- 에러 구분: 서로 다른 에러를 구분하여 적절한 응답을 제공할 수 있습니다.
- 예: 인증 실패(401)와 서버 내부 오류(500)를 다르게 처리.
- 정확한 타입 확인: 객체가 기대한 타입인지 확인해 올바른 동작을 수행할 수 있도록 보장합니다.
예시
class CustomError extends Error {}
const error = new CustomError('Oops!');
console.log(error instanceof CustomError); // true
console.log(error instanceof Error); // true (CustomError는 Error의 하위 클래스)
- error는 CustomError의 인스턴스이기 때문에 true가 반환됩니다.
- 또한, CustomError는 Error를 상속받았기 때문에 Error의 인스턴스로도 인식됩니다.
결론
instanceof는 객체의 타입을 확인하여 코드의 흐름을 제어하는 데 유용하며, 특히 에러 핸들링에서 자주 사용됩니다.
728x90