美文网首页
通过例子理解JS闭包

通过例子理解JS闭包

作者: cythia_yyy | 来源:发表于2017-10-23 18:35 被阅读0次

    理解闭包的前提是对JS变量作用域的熟悉,变量作用域包括全局变量和局部变量。

    简要说明:函数内部能够访问全局变量,函数外部不能访问函数内部的局部变量,在函数内部声明的局部变量必须使用var标识符,不加var的变量默认为函数外的全局变量。

    函数闭包可以简单描述为“定义在一个函数内部的函数”。闭包要解决的就是实现函数外部对函数内部局部变量的访问。

    下面是两个闭包的示例:

    (1)var name = "The Window";

             var object = {

                   name : "My Object",

                   getNameFunc : function(){

                          return function(){

                                return this.name;

                          };

                    }

            };

           alert(object.getNameFunc()());

    (2)var name = "The Window";

             var object = {

                     name : "My Object",

                     getNameFunc : function(){

                            var that = this;

                            return function(){

                                   return that.name;

                            };

                     }

            };

           alert(object.getNameFunc()());

    相关知识点:

    a. this的指向是在运行时决定的

    b. 每次执行的匿名函数都是一个新的function,且新的function的执行上下文为window,即此时的this指向全局

    c. getNameFunc函数为object的一个属性,使用“var that = this;”中的this指向object,而不是widnow

    输出结果 代码(1)输出"The Window",代码(2)输出"My Object"。

    相关文章

      网友评论

          本文标题:通过例子理解JS闭包

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