首页 > 其他 > 详细

阮一峰的网络日志有感

时间:2019-08-15 12:04:53      阅读:40      评论:0      收藏:0      [点我收藏+]

http://www.ruanyifeng.com/blog/javascript/

1.闭包

我看过了之后的理解,闭包就是函数中的函数,为啥这么写呢,平时我们可以获取全局变量的值,现在我要获取函数里面的值,怎么获取呢,就是通过函数中在写一个函数(这个函数可以获取父函数的变量),然后return出去这个函数,就可以在外部拿到这个函数里面的变量了啊,闭包耗内存,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。

  var name = "The Window";

  var object = {
    name : "My Object",

    getNameFunc : function(){
      return function(){
        return this.name;
      };

    }

  };

  alert(object.getNameFunc()()); //The Window

  为啥是window 呢,因为

this对象是在运行时基于函数执行环境绑定的,在全局函数中,this=window,在函数被作为某个对象的方法调用时,this等于这个对象。

但是匿名函数的执行环境是全局性的,这里getNameFunc 方法return了一个匿名函数,这个匿名函数中this指向window

解决方法还是有的,我们可以把外部作用域的this传递给匿名函数

  var name = "The Window";

  var object = {
    name : "My Object",

    getNameFunc : function(){
      var that = this;
      return function(){
        return that.name;
      };

    }

  };

  alert(object.getNameFunc()());My Object

学到了匿名函数执行环境是全局性的指向window

2.

 

阮一峰的网络日志有感

原文:https://www.cnblogs.com/myfirstboke/p/11357159.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!