JS
//【示例1】提及类的多态,用户可以联系到加号运算符。
function F(x,y){ // 构造函数
this.x = x;
this.y = y;
}
F.prototype.add = function(){ // 原型方法,求和
return this.x +this.y;
}
var f1 = new F(1,2); // 传入的是数值
var f2 = new F("1","2"); // 传入的是字符串
alert(f1.add()); // 返回3,数值相加
alert(f2.add()); // 返回字符串"12",字符串相连接
//【示例2】使用JavaScript的原型可以设计类的多态特性。
function A(){ // 超类A
this.get = function(){ // 类A的本地方法get()
alert("A");
}
}
function B(){ // 子类B
this.get = function(){ // 类B的本地方法get()
alert("B");
}
}
B.prototype = new A(); // 使用原型继承法,设置B类继承A类
function C(){ // 子类C
this.get = function(){
alert("C");
}
}
C.prototype = new A(); // 使用原型继承法,设置C类继承A类
function F(x){ // 多态类F
this.x =x; // 本地属性x
}
F.prototype.get = function(){ // 多态类F的原型方法get()
if(this.x instanceof A) // 判断是否为超类的实例,然后调用不同类的方法
this.x.get()
}
var b = new B(); // 实例化B
var c = new C(); // 实例化C
var f1 =new F(b); // 把实例b传递给F进行实例化
var f2 =new F(c); // 把实例c传递给F进行实例化
f1.get(); // 返回B,此时该方法指向的是B类中的方法get()
f2.get(); // 返回C,此时该方法指向的是C类中的方法get()