5. 기생 상속
기생성 생성자 및 공장 패턴과 유사하게 상속 프로세스를 캡슐화하는 데만 사용되는 함수를 만듭니다.
기능 Createanother (Original) {var clone = Object.create (원본); // 함수를 호출하여 새 객체를 만듭니다 .sayhi = function () {// 어떤 방식 으로이 개체를 향상시킵니다 ( "hi"); }; 복수 클론; //이 개체를 반환} var person = {name : "bob", friends : [ "shelby", "court", "van"]}; var Otherperson = createanother (person); 다른 사람 .sayhi ();위의 예에서, CreateAnother 함수는 매개 변수, 즉 새 객체의 기초로 사용될 객체를 수신합니다.
다른 사람은 사람을 기반으로 만든 새로운 대상입니다. 새로운 객체에는 사람의 모든 속성과 방법뿐만 아니라 자체 Sayhi () 방법도 있습니다.
6. 기생 조합 상속
조합 상속은 JS에서 가장 일반적으로 사용되는 상속 패턴입니다. 조합 상속의 가장 큰 문제는 어떤 경우에도 생성자가 두 번 호출된다는 것입니다. 하위 유형 프로토 타입을 만들 때 한 번, 다른 시간은 하위 유형 생성자 내부입니다.
함수 superType (name) {this.name = name; this.colors = [ "Red", "Blue", "Green"];} supertype.prototype.sayname = function () {alert (this.name);} 함수 하위 유형 (이름, age) {superType.call (this, name); // superType () this.age = age;} subtype.prototype = new supttype (); // superType () subtype.prototype.sayage = function () {alert (this.age);}에 대한 첫 번째 호출슈퍼 유형 생성자가 처음으로 요구되면, 하위 유형. 프로로 타입은 두 가지 속성을 얻게됩니다 : 이름과 색상; 둘 다 SuperType의 인스턴스 특성이지만 현재 하위 유형 프로토 타입에 있습니다.
하위 유형 생성자가 호출되면 SuperType 생성자가 다시 호출되고 이번에는 인스턴스 속성 이름과 색상이 새 개체에서 생성됩니다.
따라서이 두 속성은 프로토 타입에서 동일한 이름의 두 가지 속성을 차단합니다.
기생 조합 상속은이 문제를 해결하는 것입니다.
생성자를 빌려서 속성을 상속합니다.
프로토 타입 체인을 통해 방법을 상속합니다.
하위 유형의 프로토 타입을 지정하기 위해 SuperType 생성자를 호출 할 필요가 없습니다.
함수 henheritPrototype (subtype, superType) {var prototype = object.create (supertype.prototype); // 객체 프로토 타입 만들기 .constructor = subtype; // 객체 하위 유형을 향상시킵니다. 프로로 타입 = 프로토 타입; // 객체 지정} 함수 superType (name) {this.name = name; this.colors = [ "Red", "Blue", "Green"];} supertype.prototype.sayname = function () {alert (this.name);} 함수 하위 유형 (이름, age) {superType.call (this, name); // SuperType () this.age = age;} inheritPrototype (subtype, supttype) subtype.prototype.sayage = function (this.age);} var instance = new subtype ( "bob", 18); sayname (); instance ();상속 프로로 타입 함수는 두 가지 매개 변수를 수신합니다 : 서브 타입 생성자와 슈퍼 타입 생성자.
1. SuperType 프로토 타입의 사본을 만듭니다.
2. 생성 된 사본에 생성자 속성을 추가하여 프로토 타입을 다시 작성하여 잃어버린 기본 생성자 속성을 보충합니다.
3. 새로 생성 된 객체 (즉, 복사)를 하위 유형의 프로토 타입에 할당하십시오. 이 방법은 SuperType 생성자를 한 번만 호출하고 instanceof 및 isprototype ()도 정상적으로 사용할 수 있습니다.
위의 기사는 JS inheritance_parasitic 상속 및 기생 조합 상속에 대해 간단히 이야기합니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.