하나 개의 문서 프로토 타입 상속을 읽기

전통적인 자바 스크립트에서는 달성하기 위해 기술의 프로토 타입을 사용하는 것입니다, 상속의 위장 개념이있다. ES5에서 ES6는 새로운 구문 OOP의 프로토 타입을 기본 단지 문법 설탕을 사용하여 본. 클래스 만들기 완료에 자바 스크립트 함수를 사용하는 것입니다.

VAR의 animalGroups = { 
  포유류 : 1 , 
  파충류 : 2 , 
  양서류 : 3 , 
  무척추 : 4 
}; 
함수 동물 (이름, 타입) {
    .name을 = 이름;
   .type = 유형; 
} 
var에 개 = 새로운 동물 ( "개" , animalGroups.MAMMAL);
var에 악어는 = 새로운 동물 ( "악어", animalGroups.REPTILE을);

여기에 우리는 클래스로 (새로운 키워드를 사용하여) 객체를 생성, 클래스 메소드에 대한 또 다른 방법으로 사용할 수 있습니다 :

Animal.prototype.shout = 함수 () { 
  CONSOLE.LOG (  .name을 + '는'+  .sound + '보내고 ...' ); 
}

여기서 당신은 의심 할 수있다. 클래스 속성을 소리를하지 않았다. 예,이 서브 클래스는 위의 범주의 전송을 상속하는 것을 목적으로한다. 자바 스크립트, 상속은 다음과 같습니다 :

함수 개 (이름, 타입) { 
Animal.call ( 이름, 타입);
 .sound = '나비' ; 
}

나는 개라는보다 구체적인 기능을 정의한다. 여기 동물 클래스를 상속하기 위해, 나는이 다른 호출 매개 변수를 전달해야합니다. 방식을 인스턴스화하는 데 사용됩니다 德国牧羊犬.

VAR PET = 개 ( "독일 셰퍼드" , animalGroups.MAMMAL) 
을 console.log (PET는); // 개 {: "독일 셰퍼드"입력 : 1, 소리 : 이름 반환 "나비"를}

우리는 하위 기능에 할당되지 않은  name 및  type 특성, 우리는 슈퍼 기능 동물을 호출하고 해당 속성을 설정합니다. 애완 동물 부모 클래스를 갖는 특성 (이름, 유형). 그러나 방법은 그렇게 할 수 있습니다. ? 또한 그것을 살펴 상속 :

pet.shout (); // 오류가 발생합니다

왜 이렇게입니까?  더 상위 클래스 메소드를 상속 자바 스크립트를 할 수 있기 때문에이 문제가 발생하는 이유는 없습니다.  어떻게 해결?

// 링크의 프로토 타입 체인 
Dog.prototype = Object.create (Animal.prototype);
var에 애완 동물 = 새로운 개 ( "germanShepard" , animalGroups.MAMMAL을);
// 지금 소리 방법을 사용할 수 있습니다 
pet.shout (); // 德国牧羊犬보잉 ...

이제 사용할 수있는  shout 방법을.  우리는 어떤 종류를보고 지정된 객체의 클래스 애완 동물을 object.constructor 확인하기 위해 자바 스크립트 함수입니다 사용할 수 있습니다 :

pet.constructor; // 반환 동물

이 동물은 부모, 모호합니다. 그러나 결국은? 애완 동물이 있어야 할 어떤 애완 동물의 유형  Dog 유형. 그 이유는, 동물의 유형 생성자 개 클래스로 인해 :

Dog.prototype.constructor; // 반환 동물

이 유형의 동물이다. 우리는 올바른 클래스 이름을주고, 개 자체에이 클래스 (객체)의 모든 인스턴스를 설정해야합니다.

Dog.prototype.constructor는 개 =;

프로토 타입 상속에 대해서는, 여기에 다음을 기억해야한다 :

  • 클래스 사용하여 속성  this 바인딩

  • 수업 방법은 사용하는  prototype 바인드에 객체를

  • 상속 재산에 위해, 사용  call 전달하는 기능을 this

  • 프로토 타입 부모와 자식 연결을 사용하여 상속 방법에 대한 Object.create

  • 항상 서브 클래스 생성자는 올바른 유형을 얻기 위해 자체 객체를 설정

추천

출처www.cnblogs.com/art-poet/p/12050555.html