사실, JS를 처음 학습하기 시작했을 때 상속의 구현을 살펴 보았습니다. 그 당시, 나는 책에서 본 코드 세그먼트를 이해하려고 노력했습니다. 나는 오늘 그것을 다시 생각하고 이것이 사고 탐구의 진화의 결과라고 생각했다.
상속은 재사용을 의미합니다.
상속에 대한 고유 한 아이디어를 제쳐두고 B가 A의 구성원을 재사용하게하면 가장 간단하고 가장 무례한 방법 인 B = A;
그런 다음 문제는 다음과 같습니다. B 로의 변경은 A (동일한 개체)로 변경됩니다.
좋아, 그럼 하나를 복사하십시오. 얕은 사본이 충분히 안전하지 않은 경우 깊은 사본을 사용하십시오.
문제 : 코드는 재사용되지만 메모리는 낭비됩니다 (변수 나 메소드에 관계없이 JS의 객체입니다).
복사, 읽기 및 쓰기를하지 않으면 JS 프로토 타입을 사용할 수 있습니다. b .__ proto__ = a. 일반적으로, 우리는 __proto__를 직접 변경하지 않으며 너무 폭력적입니다. JS는 목표를보다 "부드럽게"달성 할 수있는 방법을 제공합니다 - Object.create (b).
이 방법은 실현 가능하지만 이것은 특정 객체의 재사용 모드 일뿐입니다. "Constructorb를 사용하여 생성 된 객체가 Constructora의 객체의 프로토 타입을 재사용 할 수있다"는 것을 달성하면 어떻게해야합니까?
대답은 다음과 같습니다.
질문:
해결책:
ConstructOrb를 선언 할 때 시스템은 자동으로 ConstructOrb.prototype.constructor = Constructorb; 위의 코드에서 생성자가 버려지고 생성자가 추가됩니다.
위는 가장 기본적인 상속입니다. 이 기사의 범위 내에있는 것은 서브 클래스가 생성자와 상위 클래스의 구성원을보다 일반적으로 (예 : this._super) 호출하는 방법, 상속 모드를보다 일반적으로 구현하는 방법 (예 : a = inheritfrm (b)) 등에 관한 것이 아닙니다.
위의 것은 편집자가 당신에게 가져 오는 JavaScript 클래스의 구식 상속의 전체 내용입니다. 모두가 wulin.com을 더 지원하기를 바랍니다