多态其实就是同一个方法多种调用的方式。
1 // 多态
2 function add() {
3 // 获取参数
4 var arg = arguments,
5 // 获取长度
6 len = arguments.length;
7 switch(len) {
8 // 如果没有参数
9 case 0:
10 return 10;
11 // 如果只有一个参数
12 case 1:
13 return 10 + arg[0];
14 // 如果两个参数
15 case 2:
16 return arg[0] + arg[1];
17 }
18 }
19 // 测试用例
20 console.log(add()); // 10
21 console.log(add(5)); // 15
22 console.log(add(6,7)); // 13
可以转化成更易懂的类形式:
1 // 类形式
2 function Add() {
3 // 无参数算法
4 function zero() {
5 return 10
6 }
7 // 一个参数算法
8 function one(num) {
9 return 10 + num;
10 }
11 // 两个参数算法
12 function two(num1 , num2) {
13 return num1 + num2;
14 }
15 // 相加共有方法
16 this.add = function() {
17 var arg = arguments,
18 // 获取参数长度
19 len = arguments.length;
20 switch(len) {
21 // 如果没有参数
22 case 0:
23 return zero();
24 // 如果只有一个参数
25 case 1:
26 return one(arg[0]);
27 // 如果有两个参数
28 case 2:
29 return two(arg[0], arg[1]);
30 }
31 }
32 }
33
34 // 实例化类
35 var A = new Add();
36 // 测试
37 console.log(A.add()); // 10
38 console.log(A.add(5)); // 15
39 console.log(A.add(6,7)); // 13
参考资料:《JavaScript设计模式》