闭包 vs 对象

闭包是什么

示例:

function counter() {

   var n = 0;

   return function() {

        return n++;

   }

}

var c1 = counter();

c1();

上面示例中counter执行时返回一个函数对象,该函数对象访问了局部变量n,构成了一个执行的封闭体。

闭包由两个要素构成:函数对象以及作用域链(封闭的变量空间)

之前进行流行一句话是程序是由算法与数据构成的,闭包中的算法为函数对象,数据为作用域链(可访问的变量,外部局部变量等);而对象中算法为方法,数据为成员变量。即闭包是函数对象为主题,封装了变量环境;而面向对象为数据为主题,封装了方法。都达到了算法加数据的结构。

上例使用对象实现为:

var counter = {

    n: 0;

    next: function() {

         return n++;

    }

}

counter.next();

因此闭包与对象属于一个事物的正反面,可以使用闭包实现的都可以使用对象实现。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 感谢社区中各位的大力支持,译者再次奉上一点点福利:阿里云产品券,享受所有官网优惠,并抽取幸运大奖:点击这里领取 多...
    HetfieldJoe阅读 1,121评论 0 11
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 3,247评论 2 9
  • 《心石》 我无数次踏入同一条河流 去找寻那可以预言爱情的心石 它是女娲补天灵石的遗孀 是拥有便永远幸福的象征 它应...
    W枫眸阅读 919评论 47 81
  • 秋意浓,凉风阵阵销残红,无奈凋零谁相送。死生何从,念相逢。深夜徘徊几多梦,相依相守终成空。欢情难共,萧然西风,吹不...
    lestat0713阅读 1,208评论 1 2
  • 最近在往数据库录入数据,就从网上百度了一下方法,发现有很多前辈都总结的很完美了,我也根据教程顺利的导入了数据,但是...
    根艮哏艮根阅读 3,847评论 0 2

友情链接更多精彩内容