Differential inheritance in JavaScript

Introduction

Differential Inheritance는 JavaScript와 같은 프로토 타입 기반 프로그래밍 언어에서 사용하는 공통 상속 모델입니다. 그것은 대부분의 객체가 다른 더 일반적인 객체에서 파생되며 몇 가지 작은 측면에서만 다르다는 원칙에 따라 작동합니다. 보통 객체가 다른 다른 객체에 대한 포인터 목록을 유지 관리합니다.

Example

다음 코드는 객체를 "상속"하는 간단한 예제입니다.

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() );

See also