JavaScript面向对象------继承

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" onclick="first()">FirstMethod</button><br />
    
<button validationgroup="SecondMethod" onclick="second()">SecondMethod
    
</button><br />
    
<button value="ThirdMethod" onclick="third()">ThirdMethod</button>
    
</div>
    
</form>
</body>
</html>

原创文章,转载请注明出处!
All CopyRight Reserved !

 

主页:http://jingtao.cnblogs.com

QQ:307073463
Email:jingtaodeemail@qq.com
MSN:sunjingtao@live.com

posted @ 2008-04-29 09:48  镜涛  阅读(3124)  评论(15编辑  收藏  举报
Creative Commons License

本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名孙镜涛(包含链接)。如您有任何疑问或者授权方面的协商,请给我留言