JavaScript에서의 상속

송연지·2024년 4월 11일
0

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개의 댓글