码迷,mamicode.com
首页 > 其他好文 > 详细

关于闭包的终级用法

时间:2014-07-23 11:46:16      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   re   c   

最近艾伦在研究jQuery的sizzle选择器,和我分享了一个sizzle里边关于闭包的高级用法,说它高级,是因为它用的特别巧妙,代码我们都能看明白,但是不一定能想到要这样去用闭包。然后他得意地笑了,然后说道:”现在知道为什么我坚持要看源码了吧,这样的用法,看明白了,就是你的知识积累“。不得不承认,艾伦确实是一个比较肯钻研的人。sizzle里边的闭包用法,我已经记不清了,但是那个思路我还是记下来,后面会附上自己理解后的模拟代码。

code 1:

function createClure(){
      return function cache(key,value){
                return cache[key] = value;
     }

}

var bob = createClure();
    // 传两个参数时,进行赋值
     value =  bob(‘para‘,‘test‘);

    // 传一个值时,进行取值

   value = bob[‘para‘]

    


code 2 :

(function(){
   var cache = [];
   var rubbit =  ‘music‘;
   
     function(){
            //这里可以直接引用前面的cache 
            cahce.push(‘hash‘);
            rubbit += ‘enjoying‘;

    }

})()


//常规的用法
var fun = function(){
   
    return function(cahe,rubbit){
            cahce.push(‘hash‘);
            rubbit += ‘enjoying‘;
 
    }

};
//待执行的函数
var fun2 = fun();
//需要传递的参数
var cache = [111,222];
var rubbit = ‘white‘;
//执行调用
fun2(cache,rubbit);

相比起常用法,前面的闭包,可以直接取到需要变量,省了一些中间传递的过程,使的代码更优雅。当然,还有一个重要的好处,就是减少回调函数,只不过我这里的代码没有体现这一点。这些感受,也许你看了还不是很明白,不要紧,全当做是一个提醒好了。如果你在今后的项目中用到有很深的回调,以及零乱的调用关系的时候,能够想到这里,有一种灵光闪现的感觉,我就觉得很欣慰了。

关于闭包的终级用法,布布扣,bubuko.com

关于闭包的终级用法

标签:style   blog   color   io   re   c   

原文地址:http://www.cnblogs.com/afrog/p/3861747.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!