1. 程式人生 > >學習筆記:javascript中的六種繼承

學習筆記:javascript中的六種繼承

    第五種:寄生式繼承
    function obj(o){
        function F(){}
        F.prototype=o;
        return new F();
        }
    //寄生函式
    function create(o)
    {
        var f=obj(o);
        f.fun=function(){
            return '請確認:'+this.name+this.age;
            }
        return f;
    }
    var p={
        name:'lily',
        age:20
        }
    var p1=create(p);
    alert(p1.fun());     //輸出結果是:請確認:lily20
    alert(p1.name);      //lily
    第六種:寄生式組合繼承
    function obj(o){
        function F(){}
        F.prototype=o;
        return new F();
        }
    //寄生函式
    function create(box,desk)
    {
        var f=obj(box);
        f.constructor=desk;    //調整原型構造指標,避免出錯        
        desk.prototype=f;
    }
   function Box(myname,myage)
    {
       this.name=myname;
       this.age=myage;
           
    }
    function Desk()
    {
       Box.call(this,'lily',20);  //物件冒充
    }
    create(Box,Desk);
    var desk=new Desk();
    alert(desk.name);              //輸出結果為:lily
    alert(desk.age);               //輸出結果為:20