美文网首页
懒惰函数定义

懒惰函数定义

作者: TingsLee | 来源:发表于2016-09-08 18:12 被阅读0次

    1.举个例子

    var scareMe = function () { alert("king"); scareMe = function () { alert("double king"); } }

    scareMe(); // king scareMe(); //double king

    优点:函数有些初始化工作要做,并且仅需执行一次,可以使用这种模式,显著提升程序性能
    缺点:当他重定义自身时已经添加到原始函数上的任何属性都会丢失;吐过函数开始分配给了另一个变量或者对象的方法,则重定义行为不会发生

    2.应用

    2.1 浏览器兼容性检测

    function addEvent (type, element, fun) { if (element.addEventListener) { element.addEventListener(type, fun, false); } else if(element.attachEvent){ element.attachEvent('on' + type, fun); } else{ element['on' + type] = fun; } }

    使用上述代码会执行重复检测,而同一个应用环境中,只需检测一次

    function addEvent (type, element, fun) { if (element.addEventListener) { addEvent = function (type, element, fun) { element.addEventListener(type, fun, false); } } else if(element.attachEvent){ addEvent = function (type, element, fun) { element.attachEvent('on' + type, fun); } } else{ addEvent = function (type, element, fun) { element['on' + type] = fun; } } return addEvent(type, element, fun); }

    重写上述函数,并在函数内部根据判断重定义了自身

    2.2创建单例对象
    unction Universe() { // 缓存的实例 var instance = this; // 其它内容 this.start_time = 0; this.bang = "Big"; // 重写构造函数 Universe = function () { return instance; }; }

    3.总结

    • 应用频繁,如果只用一次,是体现不出它的优点出来的,用的次数越多,越能体现这种模式的优势所在;

    • 固定不变,一次判定,在固定的应用环境中不会发生改变;

    • 复杂的分支判断,没有差异性,不需要应用这种模式;

    相关文章

      网友评论

          本文标题:懒惰函数定义

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