JavaScript에서의 상속

송연지·2024년 4월 11일

JavaScript에서의 상속, instanceof, constructor

상속(Inheritance)

JavaScript에서 상속은 객체의 프로토타입 체인을 통해 구현됩니다. 클래스 기반 언어와 달리, JavaScript는 프로토타입 기반 언어입니다. 하나의 객체가 다른 객체로부터 속성과 메서드를 상속받을 수 있습니다.

예시

class Animal {
  constructor(name) {
    this.name = name;
  }

  speak() {
    console.log(`${this.name} makes a noise.`);
  }
}

class Dog extends Animal {
  speak() {
    super.speak(); // 부모 클래스의 speak 메서드 호출
    console.log(`${this.name} barks.`);
  }
}

const dog = new Dog('Rex');
dog.speak();

결과값:

Rex makes a noise.
Rex barks.

특징

extends 키워드를 사용하여 다른 클래스를 상속받습니다.
super 키워드를 사용하여 부모 클래스의 메서드에 접근할 수 있습니다.
프로토타입 체인을 통해 메서드와 속성을 상속받습니다.

instanceof 연산자

instanceof 연산자는 주어진 객체가 특정 클래스의 인스턴스인지, 또는 프로토타입 체인 내에서 특정 클래스를 상속받는지를 확인합니다.

예시

console.log(dog instanceof Dog); // true
console.log(dog instanceof Animal); // true

특징

객체의 클래스 또는 상속 관계를 확인할 때 사용됩니다.
프로토타입 체인을 확인하여 해당 클래스가 존재하는지 검사합니다.

constructor 속성

모든 JavaScript 객체는 constructor 속성을 가지고 있습니다. 이 속성은 객체를 생성할 때 사용된 생성자 함수를 참조합니다.

예시

console.log(dog.constructor === Dog); // true

특징

객체가 생성될 때 해당 객체의 생성자 함수를 가리킵니다.
객체의 유형을 확인할 때 유용하게 사용될 수 있습니다.
JavaScript의 상속은 코드 재사용성을 높이고, 복잡한 객체 관계를 효과적으로 관리할 수 있게 해줍니다. instanceofconstructor는 객체의 생성과 상속 관계를 파악하는 데 중요한 역할을 합니다.

구분constructorinstanceof
정의객체가 생성될 때 해당 객체를 생성한 함수를 참조합니다.객체가 특정 클래스의 인스턴스인지, 또는 클래스를 상속받았는지 확인합니다.
반환값해당 객체를 생성한 생성자 함수를 반환합니다.조건이 참이면 true, 거짓이면 false를 반환합니다.
사용 예시const obj = new MyClass(); console.log(obj.constructor);console.log(obj instanceof MyClass);
사용 목적객체의 생성자 함수(클래스)를 알고 싶을 때 사용합니다.객체가 특정 클래스의 인스턴스인지, 또는 특정 클래스를 상속받는지 확인할 때 사용합니다.
특징- 모든 객체는 constructor 속성을 가짐
- 직접 설정 가능
- 프로토타입 체인을 따라가며 인스턴스 여부를 확인
- 직접적으로 조작할 수 없음
profile
프론트엔드 개발쟈!!

0개의 댓글