JavaScript的多态经典案例

来源:互联网 发布:游戏设计软件下载 编辑:程序博客网 时间:2024/06/06 20:39

JS的面向对象编程特性的另外一个就是多态性,这个多态性可以是JS这样的弱数据类型语言的强项。几乎是天然支

持的。而且对于代码的移植和继续开发以及代码的冗余有非常大的好处,下面我们来看一个例子,代码如下

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>test2.html</title>    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">    <meta http-equiv="description" content="this is my page">    <meta http-equiv="content-type" content="text/html; charset=UTF-8">    <script type="text/javascript">    function Master(){    //主人类,给动物喂食    this.feed=function(animal,food){    document.writeln(animal.constructor+"<br/><br/>");    document.writeln("主人给"+animal.name+"喂"+food.name+"<br/><br/>");    }    }        //食物类    function Food(name){    this.name=name;    }        function Fish(name){    this.food=Food;    this.food(name);    }        function Bone(name){    this.food=Food;    this.food(name);    }        //动物类    function Animal(name){    this.name=name;    }        function Cat(name){    this.animal=Animal;    this.animal(name);    }        function Dog(name){    this.animal=Animal;    this.animal(name);    }        var cat = new Cat("小猫");    var dog = new Dog("小狗");    var fish = new Fish("小鱼");    var bone = new Bone("骨头");        var master = new Master();    master.feed(cat, fish);    master.feed(dog, bone);    </script>  </head>    <body>   </body></html>

可以看到,虽然Master这个类不知道他到底调用的是谁的方法,但是通过多态这个东西,他还是很轻松的知道最后调

用的是谁,所以说这个多态的证明是显而易见的。

原创粉丝点击