javascript中闭包学习笔记

来源:互联网 发布:淘宝js 编辑:程序博客网 时间:2024/06/03 13:40

          闭包,从代码的形式上是在函数声明的内部声明另一个函数,从功能上讲,闭包是一种具有状态的函数,函数内的局部变量在函数调用后仍然有效。下面是一个闭包的简单的例子:

       

function f(){      var cnt =  0;      return function(){ return ++cnt;}}var fn=f();     //将函数的返回值赋给变量fn();fn();fn();
     上面fn(); 的三次调用输出的分别是 1,2,3,这就说明f()在被调用后其局部变量仍然存在。

     闭包的作用:

    1、闭包实现访问器

    

function obj(){      var  _x = 0;           // 返回一个定义了访问器的对象     return  { get x() { return _x;},               set x(v) {_x =v;}             };}


     2、闭包实现信息隐藏

    

var obj = (function(){            //私有变量            var position = {x:2,y:3};           //私有函数            function sum_internal(a,b){                     return Number(a)+Number(b);            }            return{                   sum:function(a,b){ return sum_internal(a,b);},                   x:position.x                  };            }      )();


    3、使用闭包实现计数器功能的类

function counter_class(i){      var cnt = i || 0;       //设置默认参数      //在此声明私有变量,私有函数    return {             //公有方法            show:function(){ return cnt;},            //return this便于使用方法链            up:function(){cnt++; return this;},            down:function(){cnt--; return this;}    };}

0 0
原创粉丝点击