이번에는 조합, 프로토 타입, 기생 및 기생 조합 상속 방법에 대해 이야기 할 것입니다.
1. 조합 상속 재산 : 의사 클래스 상속으로도 알려진이 책정은 프로토 타입 체인과 빌린 생성자 기술을 한 조각으로 결합하는 상속 방법을 나타냅니다.
예를 살펴 보겠습니다.
함수 superType (name) {this.name = name; this.colors = [ "빨간색", "파란색", "녹색"]; } supertype.prototype.sayname = function () {alert (this.name); } 함수 하위 유형 (이름, 연령) {superType.call (this, name); this.age = age; } // 상속 메소드 서브 타입 .prototype = new supttype (); subtype.prototype.sayage = function () {alert (this.age); } var instance1 = new subtype ( "nicholas", 29); 인스턴스 1.colors.push ( "검은 색"); 경고 (instance1.colors); // 빨간색, 파란색, 녹색, 검은 색 인스턴스 1.SayName (); // nicholas instance1.sayage (); // 29 var instance2 = 새로운 하위 유형 ( "Greg", 27); 경고 (instance2.colors); // 빨간색, 파란색, 녹색 인스턴스 2.SayName (); // greg instance2.sayage (); // 27조합 상속은 프로토 타입 체인의 단점을 피하고 생성자를 빌리며 장점을 통합합니다.
2. 프로토 타입 상속
상속은 사전 정의 된 생성자없이 구현 될 수 있으며, 본질적으로 주어진 객체의 얕은 복사를 수행합니다. 복사 된 사본을 추가로 수정할 수 있습니다.
함수 객체 (o) {function f () {}; F. 프로토 타입 = O; 새로운 f를 반환합니다. } var person = {이름 : "Nicholas", 친구 : [ "Shelby", "Court", "van"]}; var atherperson = 객체 (사람); 다른 사람 .name = "Greg"; 다른 사람 .Friends.push ( "Rob"); var atherperson = 객체 (사람); 다른 사람 .name = "Linda"; 다른 사람 .Friends.push ( "Barbie"); 경고 (person.friends); // Shelby, Court, Van, Rob, Barbie3. 기생 상속
프로토 타입 상속과 매우 유사하게 객체 또는 일부 정보를 기반으로 객체를 만들고 객체를 향상시키고 마지막으로 객체를 반환하는 것입니다. 슈퍼 형 생성자에 대한 다중 호출로 인한 조합 상속 패턴으로 인한 비 효율성 문제를 해결하기 위해,이 패턴은 조합 상속으로 사용할 수 있습니다.
함수 객체 (o) {function f () {}; F. 프로토 타입 = O; 새로운 f를 반환합니다. } 함수 createanother (원본) {var clone = Object (Original); clone.sayhi = function () {alert ( "hi"); }; 복수 클론; } var person = {이름 : "Nicholas", 친구 : [ "Shelby", "Court", "van"]}; var 다른 사람 = Createanother (사람); 다른 사람 .sayhi ();4. 기생 조합 상속
기생 상속 및 조합 상속의 장점을 결합하는 것은 기본 유형 상속을 달성하는 가장 효과적인 방법입니다.
// 프로토 타입을 상속하는 기능 확장 (하위 유형, SuperType) {function f () {}; f. prototype = supertype.prototype; var 프로토 타입 = 새로운 F; 프로토 타입 .constructor = 하위 유형; subtype.prototype = 프로토 타입; } // 슈퍼 클래스 메소드 함수 superType (name) {this.name = name; this.colors = [ "빨간색", "파란색", "녹색"]; } supertype.prototype.sayname = function () {return this.name; } // 서브 클래스 메소드 함수 superType (name) {this.name = name; this.colors = [ "빨간색", "파란색", "녹색"]; } supertype.prototype.sayname = function () {return this.name; } // 서브 클래스 메소드 함수 하위 유형 (이름, age) {supertype.call (this, name); this.age = age; } // 프로토 타입 확장 (하위 유형, SuperType); // 서브 클래스 메소드 SubType.Prototype.sayage = function () {return this.age; } var instance1 = new subtype ( "Shelby"); var instance2 = 새로운 하위 유형 ( "Court", 28); 인스턴스 1.colors.push ( 'black'); 경고 (instance1.colors); // 빨간색, 파란색, 녹색, 검은 색 경고 (instance2.colors); // 빨간색, 파란색, 녹색 경고 (인스턴스 1 인스턴스 하위 유형); // true alert (instance1 instancef supertype); //진실이 예제의 효율은 슈퍼 형 생성자를 한 번만 호출하므로 하위 유형에서 불필요한 불필요한 특성을 생성하지 않는다는 점에서 반영됩니다. 동시에, 프로토 타입 체인은 변경되지 않은 상태로 유지 될 수있다. 따라서 인스턴스 및 isprototylef ()도 정상적으로 사용할 수 있습니다. 개발자들은 일반적으로 기생 조합 상속이 참조 유형에 대한 가장 이상적인 상속 패러다임이라고 생각합니다.
위의 기사 JS 객체 지향 상속-다중 조합 상속에 대한 자세한 설명은 내가 공유하는 모든 내용입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.