美文网首页
JavaScript迭代器模式

JavaScript迭代器模式

作者: 晓蟲QwQ | 来源:发表于2020-12-29 01:29 被阅读0次

迭代器模式是指提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。
如今大部分语言已经内置迭代器的实现,如foreach、for( obj in arr){ }等

无迭代实现不同浏览器环境下上传数据

该方法充斥着try-catch,if-else,使得代码难以阅读,同时严重违反开闭原则。在开发和调试过程中,改动相当痛苦

var getUploadObj = function(){
    try{
        return new ActiveXObject('TXFTNActiveX.FTNUpload');  //IE上传控件
    } catch(e){
        if( supportFlash() ){   //supportFlash函数未提供
            var str = '<object type="application/x-shockwave-flash"></object>';
            return $( str ).appendTo($('body'));
        }else {
            var str = '<input name="file" type="file" />';  //表单上传
            return $(str).appendTo($('body'));
        }
    }
};

使用迭代模式的上传代码

/************* 各个上传方法 **********/
var getActiveUploadObj = function(){
    try{
        return new ActiveXObject('TXFTNActiveX.FTNUpload');  //IE上传控件
    } catch(e){
        return false;
    }
};

var getFlashUploadObj = function(){
    if( supportFlash() ){   //supportFlash函数未提供
        var str = '<object type="application/x-shockwave-flash"></object>';
        return $( str ).appendTo($('body'));
    }
    return false;
}

var getFormUploadObj = function(){
    var str = '<input name="file" type="file" />';  //表单上传
    return $(str).appendTo($('body'));
}

/************** 迭代器代码 ******************/
var iteratorUploadObj = function(){
    for ( var i = 0, fn; fn = arguments[i++];){
        var uploadObj = fn();
        if( uploadObj !== false ){
            return uploadObj;
        }
    }
};

var uploadObj = iteratorUploadObj(getActiveUploadObj, getFlashUploadObj, getFormUploadObj);

这样只需修改iteratorUploadObj的参数顺序,就可以改变调用顺序,而不必改变原整个函数的代码。

相关文章

  • JavaScript设计模式五(迭代器模式)

    JavaScript设计模式五(迭代器模式) 迭代器模式的定义: 迭代器模式的意思就是提供一种方法能够顺序的访问聚...

  • JavaScript迭代器模式

    迭代器模式是指提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。如今大部分语言已经内置...

  • 设计模式(17) 迭代器模式

    迭代器模式 基于IEnumerable的实现 使用场景 迭代器模式的优缺点 迭代器模式 迭代器模式用于顺序访问集合...

  • 第5章 -行为型模式-迭代器模式

    一、迭代器模式的简介 二、迭代器模式的优缺点 三、迭代器模式的实例

  • 行为型模式:迭代器模式

    LieBrother原文:行为型模式:迭代器模式 十一大行为型模式之六:迭代器模式。 简介 姓名 :迭代器模式 英...

  • Iterator模式

    迭代器模式(Iterator模式) 定义: 迭代器(Iterator)模式,又叫做游标(Cursor)模式。 ...

  • 迭代器模式

    一、迭代器模式介绍 二、迭代器模式代码实例

  • 设计模式 | 迭代器模式及典型应用

    本文的主要内容: 介绍迭代器模式 源码分析迭代器模式的典型应用Java集合中的迭代器模式Mybatis中的迭代器模...

  • 设计模式系列——迭代器模式

    迭代器模式介绍 迭代器模式是行为模式之一,又称为(Cursor)模式。迭代器模式源于对容器的访问,如List,Ma...

  • php设计模式——迭代器模式

    迭代器模式 说明 迭代器模式是遍历集合的成熟模式,迭代器模式的关键是将遍历集合的任务交给一个叫做迭代器的对象,它的...

网友评论

      本文标题:JavaScript迭代器模式

      本文链接:https://www.haomeiwen.com/subject/ihpxoktx.html