프로토타입 체인

프로토타입 체인

JavaScript는 프로토타입 기반 언어이며 프로토타입 체인을 사용하여 OOP 상속을 구현합니다.
프로토타입 체인은 객체 지향 프로그래밍의 기능인 상속을 구현하는 데 사용됩니다.

  • 프로토타입 체인
  • .원기
  • .__proto__
  • 물체

Student와 Human이라는 두 개의 클래스가 있다고 가정합니다.

Human 클래스의 메서드와 속성을 객체로 구현하면 다음과 같습니다.

let kimcoding = new Human('김코딩', 30);

// 속성
kimcoding.age;
kimcoding.gender;
// 메서드
kimcoding.eat();
kimcoding.sleep();

학생은 학생이기 이전에 사람입니다. 따라서 Student 클래스는 Human의 기본 메서드를 상속받을 수 있습니다.

그러나 학생은 정상적인 사람의 자질에 추가 자질이 필요합니다. 예를 들어:

let parkhacker = new Student('박해커', 22);

// 속성
parkhacker.grade;
// 메서드
parkhacker.learn();

학생은 인간의 특성을 물려받습니다.
이러한 속성과 메서드를 물려받는 클래스를 부모 클래스(여기서는 human), 속성과 메서드를 물려받는 클래스를 자식 클래스(여기서는 student)라고 하고, 이 과정을 상속이라고 합니다.

JavaScript에서는 extend 및 super 키워드를 사용하여 상속을 구현할 수 있습니다.


물체

자바스크립트의 거의 모든 객체는 물체의 예입니다

물체 변경 대상인 프로토타입 체인의 속성 및 메서드에 추가 재정의가 이루어지지 않는 한 프로토타입 개체에 대한 변경 사항은 프로토타입 체인을 통해 흐릅니다. 모든 물체에서 보기 위해

개체 자체에는 속성을 삭제하는 메서드가 없습니다. 지우는 것 연산자 삭제사용되어야한다.


DOM 요소는 예를 들어 innerHTML또는와 같은 속성 추가()다음과 같은 방법이 있습니다.

해당 메서드 또는 속성이 있는 각 요소를 통해 요소이름이 같은 공통 부모가 있음을 알 수 있습니다.


인스턴스의 __proto__ 를 사용하여 더 자세히 확인할 수 있습니다. __proto__를 사용하여 부모 클래스의 프로토타입 또는 “부모의 부모 클래스” 프로토타입을 찾을 수 있습니다.


객체.프로토타입.__proto__오늘날 대부분의 브라우저에서 지원되지만 그 존재와 정확한 동작은 웹 브라우저와의 호환성을 보장하기 위해 ECMAScript 2015 사양의 레거시 기능으로만 표준화되었습니다.

대신 더 나은 지원을 위해 Object.getPrototypeOf()사용하는 것이 좋습니다

( 객체 getPrototypeOf / Reflect.getPrototypeOf 그리고 Object.setPrototypeOf / Reflect.setPrototypeOf(객체의 ((원기)) 설정은 성능상의 이유로 피해야 하는 느린 프로세스입니다.