5.6 JavaScript instanceof와 constructor

지구·2023년 7월 20일
0

JavaScript

목록 보기
30/30
class A {
	constructor() {}
}
class B extends A {
	constructor() {
		super()
	}
}
class C extends B {
	constructor() {
		super()
	}
}

const a = new A()
const b = new B()
const c = new C()

console.log(c instanceof A) // true
console.log(c instanceof B) // true
console.log(c instanceof C) // true
// instanceof는 상속받은 클래스에 대해서 모두 true가 나온다.

console.log(c.constructor === A) // false
// c라는 인스턴스가 가진 constructor와 A 클래스의 constructor는 일치하지 않는다.
console.log(c.constructor === B) // false
// c라는 클래스의 constructor와 A 클래스의 constructor는 일치하지 않는다는 뜻이기도 하다
console.log(c.constructor === C) // true
// 

instanceof라는 키워드로 각각의 클래스와 비교하게되면 해당하는 인스턴스의 정확한 클래스(C)와도 true가 출력되지만 그 클래스가 상속받고 있는 부모 클래스(A, B)들도 true가 출력된다.

따라서, 한 인스턴스가 어느 클래스로 만들어진건지 확인하려면 constructor라는 속성을 일치 연산자로 비교하면 된다.

profile
프론트엔트 개발자입니다 🧑‍💻

1개의 댓글

comment-user-thumbnail
2023년 7월 20일

정말 유익한 글이었습니다.

답글 달기