多态


JavaScript中是可以实现多态的

很好理解,直接上代码

function Add() {
    let args = arguments
    let len = args.length
    switch(len){
        case 0:
            return 10
        case 1:
            return 10 + args[0]
        case 2:
            return 10 + args[0] + args[1]
    }
}
Add()       // 10
Add(1)      // 11
Add(1, 3)   // 14

或者采用另一种写法

function Add2() {
    function zero() {
        return 10
    }
    function one(num) {
        return 10 + num
    }
    function two(num1, num2) {
        return 10 + num1 + num2
    }
    this.add = function () {
        let args = arguments
        let len = args.length
        switch(len){
            case 0:
                return zero()
            case 1:
                return one(args[0])
            case 2:
                return two(args[0], args[1])
        }
    }
}

const A = new Add2()
A.Add()       // 10
A.Add(1)      // 11
A.Add(1, 3)   // 14