跟着书本学JavaScript设计模式(多态)

104 阅读1分钟

多态

JavaScript多态的实现通过对参数进行判断从而实现多态。

    // 多态
    function add() {
      var args = arguments;
      var len = args.length;
      switch (len) {
        case 0: return 10;
        case 1: return 10 + args[0];
        case 2: return args[0] + args[1];
      }
    }
    
    // 测试代码
    console.log(add()); // 10
    console.log(add(5)); // 15
    console.log(add(6, 7)); // 13

    // 转化成更易懂的类形式
    function Add() {
      function zero() {
        return 10;
      }
      function one(num) {
        return 10 + num;
      }
      function two(num1, num2) {
        return num1 + num2;
      }
      this.add = function () {
        var args = arguments;
        var len = args.length;

        switch (len) {
          case 0: return zero();
          case 1: return one(args[0]);
          case 2: return two(args[0], args[1]);
        }
      }
    }
    
    // 测试代码
    var A = new Add();
    console.log(A.add()); // 10
    console.log(A.add(5)); // 15
    console.log(A.add(6, 7)); // 13