惰性函数与柯里化函数

首先先说下 什么是惰性函数,顾名思义懒惰的函数,常用于在解决浏览器兼容性方面,举个例子
在一个方法里面可能会涉及到一些兼容性的问题,不同的浏览器对应不同的方法,第一次我们遍历这些方法找到最合适的那个, 并将这个方法覆盖于遍历它的函数,这就是惰性函数即只遍历一次就找到最佳方案,下次再要找那个方法的时候就不用遍历了,提高了性能。

getXHR: (function () {
            var item = [
                function () {
                    return new XMLHttpRequest()
                },
                function () {
                    return new ActiveXObject('Microsoft.XMLHTTP');
                },
                function () {
                    return new ActiveXObject('MsXML2.XMLHTTP');
                }, function () {
                    return new ActiveXObject('MsXML3.XMLHTTP');
                }
            ]
            for (var i = 0; i < item.length; i++) {
                try {
                    return item[i]
                } catch (err) {
                    continue
                }
            }
            throw new Error('not support')
        })(),

上述代码,只有在第一次执行的时候遍历了,找到最合适的就返回了,以后再用就去不用遍历了。

什么是柯里化函数?柯里化函数其实就是一种写法(我是这么认为的 )具体是怎么样的呢

function(){
    return function(){}
}

这种写法的函数就是柯里化函数,那么这种写法有什么优势么?在解决一些问题的时候 用这中写法是非常好的 ,特别是一些函数不好传递参数的问题
在JS中的事件里,有一个参数是浏览器自带的,那就是事件e 但是有时候我们想改变绑定事件对象的this,而又不能少了e,那么柯里化函数就用上了

bind: function (fn,context) {
            if (Function.prototype.bind) {
                return fn.bind(context);
            }
            return function(){
                fn.apply(context,arguments)
            }
        }

这样写,我就想传递几个参数都行
其实重要的不是怎么写,重要的是思想。在一些动态创建函数的方法里 柯里化函数也经常被用到,在一些大的框架里面也经常用到这种写法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值