JS 원형 과 몇 가지 계승 총화

5185 단어
  • 원형 체인:
  • 원형 을 이용 하여 하나의 인용 유형 으로 하여 금 다른 인용의 속성 과 방법 을 계승 하 게 하 다.
    구조 함수 에는 prototype 속성 이 있 고 그의 원형 대상 을 가리 키 며 모든 원형 대상 에 해당 하 는 constructor 속성 이 있 으 며 원 구조 함 수 를 가리킨다.
    구조 함 수 를 통 해 만 든 새 대상 중 직접 접근 할 수 없 는 [proto] 속성 이 있어 서 이 대상 도 구조 함수 의 원형 을 가리 키 게 합 니 다.대상 도 원형 중의 방법 과 속성 을 얻 었 다.대상 에 접근 하 는 방법 과 속성 이 있 을 때 대상 에 이 방법 과 속성 이 없 으 면 이전 원형 대상 에서 이 방법 과 속성 을 찾 고 찾 으 면 이 방법 과 속성 을 되 돌려 주 며 없 으 면 위의 원형 에서 이 방법 과 속성 을 찾 을 때 까지 계속 찾 습 니 다.
    기본 최상 위 프로 토 타 입:
    모든 유형 이 어떤 유형 을 계승 하 는 지 밝 히 지 않 았 을 때 Object 형식 을 기본적으로 계승 합 니 다.
  • object 에 도 prototype 속성 이 있 습 니 다. 그의 원형 을 가리 키 고 object 에 도 [proto] 가 있 습 니 다. 다만 null 을 가리 키 고 무시 할 수 있 습 니 다.
  • object 의 많은 방법 은 object 의 원형 에 존재 합 니 다.
  • 원형 체인 에서 현재 위치 에서 원형 체인 의 맨 위 위치 까지 계속 위로 방문 합 니 다.
  • 원형 체인 계승
  •   function Animal(){
               this.name="  ";//   
               this.eat=function(){  //     
                   return this.name+"    !";
               }
           }
            Animal.prototype.color="pink";//     
            Animal.prototype.sit=function (){//     
                return this.name+"     !";
            };
            //      
            function Dog(){}
            //                    :             
           Dog.prototype=new Animal();
           //      undefined
           var dog=new Dog();
          /* console.log(Dog.eat());//  eat      
           console.log(this.eat());*/
           console.log(dog.name);//  
           console.log(dog.eat());//      
           console.log(dog.color);//pink
           console.log(dog.sit());//       
           Dog.prototype.type="  ";
           Dog.prototype.name="  ";
           Dog.prototype.color="red";
           console.log(dog.type);//  
           console.log(dog.name);//  
           console.log(dog.color);//red
           console.log(dog.eat());//      
           console.log(dog.sit());//       
           console.log(dog instanceof Dog);//true dog Dog      
           console.log(dog instanceof Animal);//true dog Animal      
         /*    :
                    ,        ,       
                   /    ,       
             ,    
             :
                       ,    new Animal()         ,        
                  
                  ,           */
  • 실례 계승
  • function Animal(){
                this.name=name||" ";
                this.eat=function(){
                    return this.name+"     !";
                }
            }
            Animal.prototype.sit=function(){
                return this.name+"      !";
            };
            function Cat(){
               var mao=new Animal();
                mao.name="  ";//       ,    this.name=name||" ";
                return mao;
            }
            var cat=new Cat();// var cat=new Animal();
            console.log(cat.name);
            console.log(cat.eat());
            console.log(cat.sit());
           /*   :
                   ,   new   ()    (),            
              :
                    ,       
                  */
  • 구조 함수 계승
  •  /*    */
          /*call apply*/
          /*                 apply(object,[])  call(object,x1,x2,x3....)*/
          /*    */
          //  :                ,               (     )
    
          function Animal(name,age,sex){
                this.name=name;
                this.age=age;
                this.sex=sex;
                this.eat=function(){
                    return this.name+"     !";
                }
            }
          //     Type,Animal
          function Type(type){
              this.type=type;
              this.bite=function (){
                  return "  !"
              }
          }
          /*Type.prototype.bite=function (){
           return "  !"
           }*/
            function Dog(name,age,sex,type){
               Animal.call(this,name,age,sex);
               Type.apply(this,[type]);//Type.apply(this,arguments);//    
               /* Animal.call(this);//    
                Type.apply(this);
                this.name=name;
                this.sex=sex;
                this.age=age;
                this.type=type;*/
            }
            var dog=new Dog("  ",13," ","  ");
            console.log(dog.name);
            console.log(dog.age);
            console.log(dog.sex);
            console.log(dog.eat());
            console.log(dog.type);
            console.log(dog.bite());
          console.log(dog instanceof Dog);//true  dog Dog      
          console.log(dog instanceof Animal);//false
        /*    :
                 ,         
                 (call      )
            :
                    ,       
                        ,        /  
                  ,               ,    */
  • 그룹 상속
  •   //         
            function Animal(name){
                this.name=name;
                this.eat=function(){
                    return this.name+"     !";
                }
            }
            Animal.prototype.sit=function(){
                return this.name+"       !";
            };
            //    
           function Dog(name){
               Animal.apply(this,arguments)
           }
           Dog.prototype=new Animal();//           dog       sit  
            var dog=new Dog(" ");
            console.log(dog.name);
            console.log(dog.eat());
            console.log(dog.sit());
          /*    :
                         
              :
                   ,    ;*/

    좋은 웹페이지 즐겨찾기