美文网首页
闭包 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