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의 생성자 함수로 생성되었다.