> 웹 프론트엔드 > JS 튜토리얼 > 프로토타입 상속의 여러 방법 소개

프로토타입 상속의 여러 방법 소개

一个新手
풀어 주다: 2017-10-16 09:16:46
원래의
1373명이 탐색했습니다.

프로토타입 상속

부모:

    function Parent(name){
        this.name=name;
    }
    Parent.prototype.sayHello=function(){
        console.log("Hello,"+this.name);
    }
로그인 후 복사
  1. 프로토타입 체인 상속

    function Kid(){};
    Kid.prototype=new Parent("who");
    
    var k=new Kid();
    console.log(k.name); //who
    console.log(k.sayHello()); //Hello,who
    로그인 후 복사

    단점: 인스턴스를 생성할 때 부모에게 매개변수를 전달할 수 없습니다.

  2. 구성적 상속

    function Kid(name){
        Parent.call(this,name);
    };
    
    var k=new Kid("who");
    console.log(k.name); //who
    console.log(k.sayHello()); //error
    로그인 후 복사

    단점: 수 없음 상위 레벨 프로토타입 체인 속성 획득

  3. 인스턴스 상속

    function Kid(name){
        var p=new Parent(name);
        return p;
    };
    
    var k=new Kid("who");
    console.log(k.name); //who
    console.log(k.sayHello()); //Hello,who
    로그인 후 복사

    단점: 인스턴스는 상위 레벨의 인스턴스입니다.

  4. 상속 복사

    function Kid(name){
        var p=new Parent(name);
        for(var item in p){
            Kid.prototype[item]=p[item];
        }
    }
    
    var k=new Kid("who");
    console.log(k.name); //who
    console.log(k.sayHello()); //Hello,who
    로그인 후 복사

    단점: 메모리를 너무 많이 차지합니다

  5. 결합 상속

    function Kid(name){
        Parent.call(this,name);
    }
    Kid.prototype=new Parent();
    
    var k=new Kid("who");
    console.log(k.name); //who
    console.log(k.sayHello()); //Hello,who
    로그인 후 복사

    단점: 부모 클래스 생성자를 두 번 호출

  6. 기생 조합 상속

    function Kid(name){
        Parent.call(this,name);
    }
    (function(){
        var p=function(){};
        p.prototype=Parent.prototype;
        Kid.prototype=new p();
    })()
    로그인 후 복사

    단점: 작성 방법이 더 번거롭다

    위 내용은 프로토타입 상속의 여러 방법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿