(四)不可不说的JS重点知识~闭包(测试小姐姐专题)

·  阅读 1353
(四)不可不说的JS重点知识~闭包(测试小姐姐专题)

        我们一起,每天进步一点。日积月累,有朝一日定会,厚积薄发。

(一)不可不说的JS重点知识~立即执行函数

(二)不可不说的JS重点知识~节流和防抖(测试小姐姐专题)

(三)不可不说的JS重点知识~递归和尾递归(测试小姐姐专题)

(四)不可不说的JS重点知识~闭包(测试小姐姐专题)

(五)javaScript重点知识~~~单例模式(测试小姐姐专题)

        大家好,经过一周的“递归”攻势。测试小姐姐已经返璞归真(她竟然敢在我的副驾驶脱鞋了。还把腿搭在了储物箱上面),她卸去了女神高冷的姿态。这让我心里多少有点安慰,毕竟没有辜负我这些日子的付出。
       不过我发现测试小姐姐身边,还是有别的男人在其左右献殷勤。怎么办呢?我是占有欲很强的男人啊,这种情况能容忍吗?要想办法,让小姐姐心里只有我一个人。她的私生活只能有我来参与,具体就是:她只能和我牵手、一起逛街、购物、吃饭........当然还有 吻.........
时间一分一秒的过去,“闭包”的编程思想让我灵光一现。“闭包”其中一个特性,不就可以让一个对象的属性设置成私有属性吗!!!!
        让小姐姐的,牵手、吃饭、购物.....这些属性。只能让我来访问 就可以了。
把小姐姐当做一个函数,在她的内部创建一个函数,然后return这个函数。当她new一个对象。返回的函数始就是是我。只有我能访问 小姐姐这个函数的所有属性。这个想法态太MT了。

一、接下来让我们认识一下闭包。

**闭包函数**:声明在一个函数中的函数,叫做闭包函数。
**闭包**:内部函数总是可以访问其所在的外部函数中声明的参数和变量,即使在其外部函数被返回(寿命终结)了之后。

二、闭包的优缺点

      局部变量会常驻在内存中;
      可以避免使用全局变量,防止全局变量污染;
      会造成内存泄漏(有一块内存空间被长期占用,而不被释放)

三、闭包的经典案例。

案例一:

function xiaojiejie(){           
         var dubai = '我爱你小马哥哥';  // xiaojiejie的活动对象之中;          function wenwo(){               
                 console.log('吻我')         
         }                    
         return function(){   //匿名函数的活动对象;         
                console.log(dubai);        
                wenwo();             
          }                   
}           
     var wo = xiaojiejie();         
     wo();//我爱你小马哥哥,吻我
复制代码

案例二:

function xiaojiejie(x) {
         return function(y) {
                return x + y;
         };
}
        var duixiang1 = xiaojiejie("小马哥");
        var duixiang2 = xiaojiejie("我爱你");
        console.log(duixiang1("我爱你"));  // 小马哥 我爱你
        console.log(duixiang2("xxx")); // 我爱你 xxx
复制代码
        没有十全十美的解决方案。正如这个闭包,我忽略了一个特性就是,小姐姐可以new好多个对象出来,每个对象,都有他们自己特有的内存地址。new出来的每个不同的对象都能访问小姐姐的属性。虽然案例二,可以通过传参的方式,可以在某种程度上进行优化。但是小姐姐在灯红酒绿的大都市中难免受到腐蚀。如果解决不了这个问题,小姐姐都可以当海王了。想到这里我哭了,怎么办??我想让小姐姐的心里只有我........ 各位大神帮个支个招吧.........
分类:
前端
标签:
收藏成功!
已添加到「」, 点击更改