首頁 > web前端 > js教程 > 原型繼承的幾種方式介紹

原型繼承的幾種方式介紹

一个新手
發布: 2017-10-16 09:16:46
原創
1376 人瀏覽過

原型繼承

父級:

    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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板