ホームページ > ウェブフロントエンド > jsチュートリアル > プロトタイプ継承のいくつかの方法の紹介

プロトタイプ継承のいくつかの方法の紹介

一个新手
リリース: 2017-10-16 09:16:46
オリジナル
1374 人が閲覧しました

プロトタイプの継承

親:

    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
    ログイン後にコピー

    短所:親クラスのコンストラクタを2回呼び出す

  6. Parasite結合継承

    function Kid(name){
        Parent.call(this,name);
    }
    (function(){
        var p=function(){};
        p.prototype=Parent.prototype;
        Kid.prototype=new p();
    })()
    ログイン後にコピー

    短所:書き方が面倒

    以上がプロトタイプ継承のいくつかの方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート