javascript面向对象继承的三种方法

<html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server">    <title>Untitled Page</title>    <script language="javascript" type="text/javascript">    //基类    

function Person()    {        this.Name="Person";        this.Sex="NONE";        this.Age="?";        this.SayName=function(){alert(this.Name);};        this.SaySex=function(){alert(this.Sex);};        this.SayAge=function(){alert(this.Age);};    }    //子类    function ManPerson()    {           this.Name="ManPerson";        this.Sex="Man";        this.Age="20"        Person.apply(this);//执行该语句时会调用Person中的构造器,先前赋值的ManPerson,Man,20就失去作用了,所以这句话        //要放在this.Name="ManPerson";之前才能即继承Person的方法,又不会覆盖我们的赋值操作。    }        

//第一种方法    function first(){    var p=new Person();    alert("Name:"+p.Name+"  Sex:"+p.Sex+"  Age:"+p.Age);//执行结果为Name:Person  Sex:NONE  Age:?    p.SayName();//执行结果Person    var mp=new ManPerson();    alert("Name:"+mp.Name+"  Sex:"+mp.Sex+"  Age:"+mp.Age);//apply在赋值后结果为:Name:Person  Sex:NONE  Age:?    //在赋值前结果为:Name:ManPerson  Sex:Man  Age:20    mp.SaySex();//执行结果Man    //可以看到ManPerson很好的继承了Person    }        

//第二种方法    function second(){    for(pro in Person)    {        ManPerson[pro]=Person[pro];    }    var p=new Person();    alert("Name:"+p.Name+"  Sex:"+p.Sex+"  Age:"+p.Age);//执行结果为Name:Person  Sex:NONE  Age:?    p.SayName();//执行结果Person    var mp=new ManPerson();    alert("Name:"+mp.Name+"  Sex:"+mp.Sex+"  Age:"+mp.Age);//执行结果为Name:Person  Sex:NONE  Age:?    mp.SaySex();//执行结果NONE    mp.Name="ManPerson";    mp.SayName();//执行结果:ManPerson    //可以看到ManPerson继承了Person的SayName    }    

function third(){    //第三种方法    ManPerson.prototype=Person.prototype;    var mmp=new ManPerson();    mmp.SayName();//执行结果:Person    mmp.Name="ManPerson";    mmp.SayName();//执行结果:ManPerson    //ManPerson继承了Person的方法    }    </script></head><body>    <form id="form1" runat="server">    <div>    <button value="FirstMethod" οnclick="first()">FirstMethod</button><br />    <button validationgroup="SecondMethod" οnclick="second()">SecondMethod    </button><br />    <button value="ThirdMethod" οnclick="third()">ThirdMethod</button>    </div>    </form></body></html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值