P4Ch5.클래스- 상속과 instanceof
상속과 instanceof
아래는 클래스 상속과 인스턴스 생성에 대한 예시이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class A {
constructor() {}
}
class B extents A {
constructor() {
super()
}
class C extents B{
constructor() {
super()
}
}
const a = new A()
const b = new B()
const c = new C()
클래스 A는 기본 클래스로, 빈 생성자 함수를 가지고 있다.
클래스 B는 클래스 A를 상속하며, 생성자 함수 내에서 super()
를 호출하여 부모 클래스 A의 생성자를 실행한다.
클래스 C는 클래스 B를 상속하며, 생성자 함수 내에서 super()
를 호출하여 부모 클래스 B의 생성자를 실행한다.
클래스 A,B,C의 인스턴스를 각각 a,b,c라고 했을 때 instanceof
연산자와 constructor
속성을 통해 클래스와 인스턴스 간 관계를 확인할 수 있다.
- instanceof : 왼쪽 피연산자가 오른쪽 피연산자의 인스턴스인지 여부를 판별
- constructor : 인스턴스를 생성한 클래스를 참조
instanceof
1
2
3
4
5
6
7
8
9
10
11
console.log(a instanceof A); //true
console.log(a instanceof B); //false
console.log(a instanceof C); //false
console.log(b instanceof A); //true
console.log(b instanceof B); //true
console.log(b instanceof C); //false
console.log(c instanceof A); //true
console.log(c instanceof B); //true
console.log(c instanceof C); //true
상속된 클래스의 인스턴스는 상위 클래스와 자신의 클래스 모두의 인스턴스이다. (하위 클래스 포함x)
constructor
1
2
3
console.log(c.constructor === A); //false
console.log(c.constructor === B); //false
console.log(c.constructor === C); //true
constructor
속성은 인스턴스를 생성한 클래스만을 참조한다.
- 인스턴스 c는 클래스 C의 생성자 함수로 생성되었다.