首页 > 其他 > 详细

惰性函数

时间:2020-11-24 17:12:18      阅读:25      评论:0      收藏:0      [点我收藏+]

函数高阶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. 分支判断,调用的所有结果都会走同样的分支。
    适用浏览器的兼容性。

惰性函数

原文:https://www.cnblogs.com/cyrus-br/p/10529711.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!