zoukankan      html  css  js  c++  java
  • 惰性函数

    函数高阶3

    函数重写

    一个函数执行之后, 被另一个函数覆盖了。 其实就是你之前函数指针, 指向了另一个新函数.

    function fun_a(){
    	console.log('fun_a');
    	fun_a = function(){
    		console.log("fun_b");
    	}
    }
    
    fun_a();  // fun_a,  并且让fun_a指向新函数
    fun_a();  // fun_b
    

    看例子

    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;
        }
    }
    

    每次给浏览添加事件的时候,都会做判断。 其实,我们在第一次用addEvent函数的时候,就已经可以确定浏览器了,之后所有调用addEvent都会做同样的判断,走同样的分支。在上面我们已经知道了 函数重写了, 那么我们在一次做出判断之后,重写 addEvent 函数,这样以后调用的时候就不需要判断了。
    改写成如下形式: 利用到了立即执行函数,在函数加载的时候就做出了判断,返回确定函数

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

    惰性函数

    惰性函数的本质是函数重写。
    惰性函数, 是指在执行之后才能确定函数本身,不是确定在定义时。

    适用场景

    1. 应用频繁,如果只用一次,是体现不出它的优点出来的,用的次数越多,越能体现这种模式的优势所在;
    2. 分支判断,调用的所有结果都会走同样的分支。
      适用浏览器的兼容性。
  • 相关阅读:
    vue 前端框架 (二) 表格增加搜索
    vue 前端框架
    数据结构-树的基本操作
    linux的串口驱动分析
    TTY驱动程序架构
    linux MTD系统解析(转)
    DM9000网卡的基本工作原理
    ok6410的LCD裸机范例
    ok6410的DMA裸机总结
    ok6410串口裸机总结
  • 原文地址:https://www.cnblogs.com/cyrus-br/p/10529711.html
Copyright © 2011-2022 走看看