码迷,mamicode.com
首页 > Web开发 > 详细

js闭包的理解

时间:2015-07-11 10:28:48      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:

闭包在js开发中会经常被使用到。那么,什么是闭包?

一个官方的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式。换句话说,JavaScript允许使用内部函数---即函数定义和函数表达式位于另一个函数的函数体内。而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数。当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。

function wrap(){
  var value="something";
  function closure(){
     alert(value);
   }
  return closure;
}
wrapp();
闭包有什么用呢?

1.模拟面向对象的代码风格,实现封装

function Person(){    
    var name = "name";       
    return {      
       getName : function(){    
           return name;    
       },    
       setName : function(newName){    
           name = newName;    
       }    
    }    
}; 

 2. 缓存数据

引用JavaScript单例模式的写法

var single = (function(){
    var unique;

    function getInstance(){
        if( unique === undefined ){
            unique = new Construct();
        }
        return unique;
    }

    function Construct(){
        // ... 生成单例的构造函数的代码
    }

    return {
        getInstance : getInstance
    }
})();

这里缓存了对象unique,实现了下一次调用时使用的对象就是unique这个对象。我们经常使用的在for循环的场景下存储变量下表的应用也是基于缓存实现。

闭包的坏处是什么呢?

闭包的缺点就是常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。

http://www.cnblogs.com/carekee/articles/1733847.html

小弟刚入行,欢迎各位拍砖。



js闭包的理解

标签:

原文地址:http://www.cnblogs.com/frontyefei/p/4638050.html

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