一,前言
面向对象编程有继承,多态,封装特性,之前介绍了js实现封装和继承,这篇介绍多态性的实现
多态性:同一方法,作用于不同对象时,可产生不同执行结果
在java等面向对象语言中,将需要实现多态的方法作为父类的抽象方法,
子类通过重写父类的抽象方法,进而在调用时系统会根据对象运行时类型决定调用哪个方法
js中实现多态不是这么灵活,只能模拟,
如果纯粹的站在面向对象编程的角度去看待,这种实现也不能算是真正的多态
二,javaScript模拟多态实现
例如:js通过对参数的判断来实现多种调用方式,从而模拟多态特性
function Add() {
function zero() {
return 10;
}
function one(num) {
return 10 + num;
}
function two(num1, num2) {
return 10 + num1 + num2;
}
this.add = function () {
var arg = arguments,
len = arguments.length;
switch (len) {
case 0:
return zero();
case 1:
return one(arguments[0]);
case 2:
return two(arguments[0], arguments[1]);
default:
return 0;
}
}
}
var instance = new Add();
console.log(instance.add())
console.log(instance.add(1))
console.log(instance.add(1, 2))
调用实例的add方法,会根据参数数量,选择不同算法进行计算
三,结尾
javaScript面向对象编程部分的基础就到这里了,介绍了面向对象js的封装,继承,多态特性的实现
在了解面向对象js的基础上,可以开始接触js设计模式了
后续将会介绍js多种设计模式的实现,助力实际项目的开发,编写可维护,可拓展的优雅代码