js 面向对象继承 动物叫声比赛版

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>无标题页</title>
</head>
<body>
<script>
function Animal()
{
 this.name="无名";//默认名称

 this.shoutNum=3;
 this.shout=null;
} 

function Cat(name) 
{
 if(undefined!=name&&""!=name)//实现构造函数的重载
 {
 this.name=name;
 }
    this.shout=function(){  //Animal中的shout()的Cat实现
            var result = "";
            for (var i = 0; i < this.shoutNum; i++)
                result += "喵 ";

            return "我的名字叫" + this.name + " " + result;
     }
}
Cat.prototype = new Animal(); //继承Animal

function Dog(name) 
{  
 if(undefined!=name&&""!=name)
 {
 this.name=name;
 }
     this.shout=function(){
            var result = "";
            for (var i = 0; i < this.shoutNum; i++)
                result += "汪 ";

            return "我的名字叫" + this.name + " " + result;
     }
} 
Dog.prototype = new Animal();//继承Animal



var click={};
click.initcat=function()
{
    var cat = new Cat()//调用无名name
    //cat.shoutNum=5;//调用shoutNum=3;
    return cat.shout();
};
click.cat=function()
{
    var cat = new Cat("小咪");//传入名称小咪
    cat.shoutNum=5;//设置叫声次数
    return cat.shout();
};
click.dog=function()
{
    var dog = new Dog("旺财");
    dog.shoutNum=5;
    return dog.shout();
    
};

alert(click.initcat());
alert(click.cat());


</script>
</body>
</html>
原文地址:https://www.cnblogs.com/skykang/p/2113128.html