JavaScript设计模式(4)-设计模式的基础-面向对象JS-多态

一,前言

面向对象编程有继承,多态,封装特性,之前介绍了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())     // 10
console.log(instance.add(1))    // 11
console.log(instance.add(1, 2)) // 13
调用实例的add方法,会根据参数数量,选择不同算法进行计算

三,结尾

javaScript面向对象编程部分的基础就到这里了,介绍了面向对象js的封装,继承,多态特性的实现
在了解面向对象js的基础上,可以开始接触js设计模式了
后续将会介绍js多种设计模式的实现,助力实际项目的开发,编写可维护,可拓展的优雅代码

猜你喜欢

转载自blog.csdn.net/ABAP_Brave/article/details/81387135