开发者社区> laowan> 正文

javascript中闭包学习笔记

简介:           闭包,从代码的形式上是在函数声明的内部声明另一个函数,从功能上讲,闭包是一种具有状态的函数,函数内的局部变量在函数调用后仍然有效。
+关注继续查看

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

       

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;}
    };
}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
好程序员web前端培训JavaScript学习笔记DOM
var box = document.getElementById('box') console.log(box) //
339 0
《JavaScript高级程序设计 第3版》-学习笔记-3
P84-P137页, 这一章看的真久,这个月事太多了。有些内容在代码注释里没提出来了 1、JS强大的数组类型,元素类型任意,提供了非常多的操作数组的方法和属性 1 /* 2 数组类型 3 */ 4 5 //stack 6 var colors = ['red','blue']; 7 colors.
970 0
JavaScript面向对象的编程指南学习笔记
JavaScript面向对象的编程指南学习笔记 第一章 1,用自己的语言描述出,什么是对象、类、封装、聚合、继承、多态? 对象,拥有属性和方法的任何抽象概念。 类,可以实例化,有共同属性或方法(行为)的相似对象,的模板 封装,提供接口,隐藏接口的实现 聚合,将大功能(对象)拆分成小功能(小对象)去实现的逆过程。
8940 0
笔记:JavaScript中的30个疑难杂症
笔记:JavaScript中的30个疑难杂症
36 0
植物的Transcription Factor挖掘笔记
1、了解一下有哪些转录因子 1、在网站http://planttfdb.cbi.pku.edu.cn/中查找已知转录因子有哪些 2、下载已有种子 根据第一步中已知的转录因子的简写,在http://pfam.xfam.org/search#searchKeywordBlock中检索相应的种子文件,如果有,则下载,若没有则下一步自己制作。
980 0
《JavaScript高级程序设计(第3版)》阅读笔记
第6章 面向对象的程序设计 6.2 创建对象 6.2.1 工厂模式 JavaScript创建对象(一)—— 工厂模式 6.
851 0
【青训营】- TypeScript入门笔记
【青训营】- TypeScript入门笔记
31 0
+关注
laowan
开源技术专家
22
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载