闭包的理解

闭包的描述:闭包就是能够读取其他函数内部的变量的函数。
闭包的用途:1、读取函数内部的变量。2、让变量的值一直保持在内存中。
闭包的注意点:1、闭包会让函数的变量保存在内存中,内存消耗很大。所以不能滥用闭包。(退出前将局部变量全部删除)2、闭包可以改变父函数内部的值
理论要通过实践去理解。

案例1

var name = "The Window";
var object = {
  name: "My Object",
  /*console.log(this)
  * 这时候的this将是object这个对象:{ name: 'My Object', getNameFunc: [Function: getNameFunc] }*/
  getNameFunc: function () {
    /*这时候console.log(this)
     *this将是object这个对象:{ name: 'My Object', getNameFunc: [Function: getNameFunc] }*/
    return function () {
      /*在匿名函数中console.log(this),匿名函数本身也是个闭包,这时候的this指向window
      * 输出是成片的这个:
      * { console: [Getter],
  DTRACE_NET_SERVER_CONNECTION: [Function],
  DTRACE_NET_STREAM_END: [Function],
  DTRACE_HTTP_SERVER_REQUEST: [Function],
  DTRACE_HTTP_SERVER_RESPONSE: [Function],
  DTRACE_HTTP_CLIENT_REQUEST: [Function],
  DTRACE_HTTP_CLIENT_RESPONSE: [Function],
  global: [Circular],
  process: 
   process {
     title: '/usr/local/bin/node',
等等...
*/
      console.log(this)
      return this.name;
      /* 返回this.name,全局this里根本没定义name啊。所以返回undefined*/
    };
  }
};
console.log(object.getNameFunc()());

如果想让他有输出,就全局定义object

 object = {
    name : "My Object",
    getNameFunc : function(){
      var that = this;
      return function(){
        return that.name;
      };
    }

再来个案例

var name = "The Window";
  var object = {
    name : "My Object",
    getNameFunc : function(){
/*这时候的this,就是指向object这个对象,将其复制给that,目的为了给下面的匿名函数使用*/
      var that = this;
      return function(){
        return that.name;
      };
    }
  };
  alert(object.getNameFunc()());
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 一、变量...
    zouCode阅读 1,391评论 0赞 13
  • 1.什么是闭包? 1.1.定义:在程序语言中,所谓的闭包,是指语法域位于某个特定的区域,具有持续参照(读写)位于该...
    以手画圆心阅读 1,880评论 0赞 0
  • 一、闭包的含义 官方对闭包的解释:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也...
    sdcV阅读 18,257评论 0赞 7
  • 闭包:从字面意思来理解就是封闭和包裹,换句话说,就是在函数内部定义的变量,在函数的外部无法访问到,因此就说函数构成...
    清葉阅读 686评论 1赞 0
  • 2017.10.5小假期进去一半了,今天大宝辅导班上课了,这个孩子从小就这样,学习不咋地,上学很积极,今天也是,知...
    瑜珊妈妈阅读 241评论 0赞 0

友情链接更多精彩内容