美文网首页
闭包 vs 对象

闭包 vs 对象

作者: 真海 | 来源:发表于2018-10-21 16:54 被阅读13次

闭包是什么

示例:

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();

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

相关文章

网友评论

      本文标题:闭包 vs 对象

      本文链接:https://www.haomeiwen.com/subject/niibzftx.html