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多种设计模式的实现,助力实际项目的开发,编写可维护,可拓展的优雅代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BraveWangDev

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值