--- title: Differential inheritance in JavaScript slug: Web/JavaScript/Differential_inheritance_in_JavaScript translation_of: Web/JavaScript/Differential_inheritance_in_JavaScript ---
차등 상속(Differential Inheritance)은 자바 스크립트와 같은 프로토 타입 기반 프로그래밍 언어에서 사용되는 일반적인 상속 모델입니다. 대부분의 객체는 다른 일반적인 객체에서 파생되고 몇 가지 작은 측면에서만 차이가 있다는 원칙에 따라 동작합니다. 일반적으로 객체가 다른 다른 객체에 대한 포인터 목록을 내부적으로 유지합니다.
다음 코드는 개체를 "상속"하는 간단한 메서드 예제입니다.
Object.prototype.inherit = function(){ // Create a new object with this as its prototype var p = Object.create(this); /* actually not necessary: // Apply the constructor on the new object this.constructor.apply(p, arguments); */ return p; };
상속(inherit)을 사용하면 일반 프로토 타입에서보다 구체적인 개체를 간단히 파생시킬 수 있습니다. 다음은 상속 방법 및 차등 상속을 사용하여 점점 더 구체적인 객체를 구성하는 간단한 예입니다.
var root = {}; // Could be any object with any prototype object var record = root.inherit(); record.toString = function(){ return "a Record"; }; var person = root.inherit(); person.firstName = false; person.lastName = false; person.toString = function(){ if (this.firstName) { if (this.lastName) { return this.firstName + " " + this.lastName; } else { return this.firstName; } } else if (this.lastName) { return this.lastName; } else { return "a Person"; } }; JoePerson = person.inherit(); JoePerson.firstName = "Joe"; alert( JoePerson.toString() );