zoukankan      html  css  js  c++  java
  • js中值得推荐的Memoization

    根据Widipedia的定义,Memoization是一种旨在加速计算程序,避免函数调用过程中对先前已处理输入的重复计算而采取的优化技巧。

    In computing, memoization is an optimization technique used primarily to speed up computer programs by having function calls avoid repeating the calculation of results for previously processed inputs. (Wikepedia-Memoization:http://en.wikipedia.org/wiki/Memoization)

    今天在看Pro JavaScript Design Patterns碰到很好的一例,是讲Factory模式的使用时讲到的(Page100)。目标是用Factory模式构建一个进行Ajax请求的XHR Object,函数名为createXhrObject,构建的具体细节要根据运行的环境而定。第一次代码运行时,将检测三种不同的创建XHR Object的方式,找到一种可用的方式时,就返回这一对象,同时将这一函数自身用可用的创建该对象的函数覆写。代码如下:

    SimpleHandler=function(){};
    SimpleHandler.prototype={
    request:function(){...},
    createXhrObject:function(){
    var methods=[
    function(){return new XMLHttpRequest();},
    function(){return new ActiveXObject('Msxml2.XMLHTTP');},
    function(){return new ActiveXObject('Microsoft.XMLHTTP');}
    ];
    for(var i=0, len=methods.length; i<len; i++){
    try{
    method[i]();
    }
    catch(e){
    continue;
    }

    this.createXhrObject=methods[i];//覆写自身
    return method[i]();//原书中少了执行的括号
    }
    }
    }

    附:更多的讲解Memoization的博文

    http://hi.baidu.com/fengkuang031/blog/item/be89cc13a750a1cca6ef3f44.html

    http://www.joy-studio.com/frontend-develop/javascript-branch-requirements-and-optimization.html#comment-24

  • 相关阅读:
    Catch That Cow(poj 3278)
    补丁vs错误(codevs 2218 错误答案)
    泥泞的道路(codevs 1183)
    一塔湖图(codevs 1024)
    多源最短路(codevs 1077)
    html5.js让IE(包含IE6)支持HTML5元素方法
    字符数组的定义与使用具体解析
    QT解析嵌套JSON表达式
    SVN入门-2分钟教你入门
    Codeforces Round#251(Div 2)D Devu and his Brother
  • 原文地址:https://www.cnblogs.com/pinocchioatbeijing/p/2323114.html
Copyright © 2011-2022 走看看