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这个类不知道他到底调用的是谁的方法,但是通过多态这个东西,他还是很轻松的知道最后调
用的是谁,所以说这个多态的证明是显而易见的。