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