关于阮大大的闭包思考题

标签: JavaScript
2人阅读 评论(0) 收藏 举报
分类:

代码片段一。

var name = "The Window";

  var object = {
    name : "My Object",

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

    }

  };

  alert(object.getNameFunc()());

在上述代码中,不论是getNameFunc()还是它内部的function(),都是全局函数,并不只在object中执行,且由于JavaScript的声明提前(hoisting),所以执行时的this并不是object,而是外部的全局,所以输出"The Window"。

代码片段二。

var name = "The Window";

  var object = {
    name : "My Object",

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

    }

  };

  alert(object.getNameFunc()());
上述代码关键在于var that = this; 在getNameFunc()中执行这句话,使得function()中的that变成了getNameFunc()所在的父函数(对象),因此当执行时,that对象为object。


学习Javascript闭包(Closure)


查看评论

关于项目干系人

1、了解项目干系人的期望 2、识别和管理项目干系人 3、如何让项目干系人满意
  • 2017年07月18日 16:20

前端知乎:关于阮一峰博客《学习Javascript闭包》章节中最后两个思考题

阮一峰博客:《学习Javascript闭包》章节中最后有个思考题: 如果你能理解下面两段代码的运行结果,应该就算理解闭包的运行机制了。 代码片段一 var name = ...
  • mengnst
  • mengnst
  • 2015-12-08 22:27:23
  • 1238

闭包阮一峰

闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 下面就是我的学习笔记,对于Javascript初学者应该是很有用的。 一、变量的作用域 ...
  • Forever212121
  • Forever212121
  • 2015-08-06 08:05:30
  • 960

闭包的两个经典例子

1.    下面这段代码想要循环延时输出结果0 1 2 3 4,请问输出结果是否正确,如果不正确,请说明为什么,并修改循环内的代码使其输出正确结果 for (var i = 0; i < 5; +...
  • linyeban
  • linyeban
  • 2017-02-14 19:40:20
  • 543

前端,别闹 学习Javascript闭包(Closure)及几个经典面试题理解

今天遇到一个面试题,结果让我百思不得其解。后来在查阅了各种文档后,理清了来龙去脉。让我们先来看看这道题: 1 function Foo( ){ 2   var i = 0; 3   return ...
  • weixin_39927080
  • weixin_39927080
  • 2018-02-28 17:14:11
  • 216

学习Javascript闭包(Closure)阮一峰

学习Javascript闭包(Closure) 作者: 阮一峰 日期: 2009年8月30日 闭包(closure)是Javascript语言...
  • snowhero0321
  • snowhero0321
  • 2017-04-08 09:40:48
  • 239

js闭包的理解以及闭包中this的理解

javascript 闭包、this 2016-01-25 js pl 闭包其实很好理解,但是由于经常把this和闭包绑在一起,从而加大了理解的难度,如果将他们分开考虑,那就清晰多...
  • u010585120
  • u010585120
  • 2016-07-27 16:59:54
  • 4998

关于this指针和闭包

阮一峰老师讲技术真的是言简意赅。 this指针,http://www.ruanyifeng.com/blog/2010/04/using_this_keyword_in_javascript.htm...
  • az_77
  • az_77
  • 2016-08-06 11:43:49
  • 315

C中一道关于内存的思考题

昨天面试的时候不太确定,回来试了一下,当时虽然大方向是对的,但是一些小细节还是回答的不够好 分别运行下面的Test,会出现什么情况: void GetMemory(char *p) { ...
  • guang_jing
  • guang_jing
  • 2015-06-30 22:38:46
  • 1165

JavaScript进阶:谈谈对闭包的理解

前言这篇文章是我读了,阮一峰老师关于闭包的一篇博客的读后感,为了加深自己对闭包的理解,在这里写下自己对闭包的理解,欢迎大家指出错误。一、变量的作用域要理解闭包,首先说一下Javascript特殊的变量...
  • cho_jun
  • cho_jun
  • 2017-08-03 20:51:48
  • 251
    个人资料
    等级:
    访问量: 0
    积分: 20
    排名: 0
    文章存档