闭包求解释

问题描述

var name = "The Window";   var object = {     name : "My Object",     getNameFunc : function(){       return function(){         return this.name;      };     } }; alert(object.getNameFunc()()); //The Window为什么上面这段代码运行之后alert 出来的是“The Window”?? 求详细解释

解决方案

this对象是在运行时基于函数的执行环境绑定的,匿名函数的执行环境具有全局性,因此匿名函数的this指向window
解决方案二:
var fn = object.getNameFunc();alert(fn());alert(function(){ return this.name; })
解决方案三:
var name = "The Window";   var object = {    name : "My Object",     getNameFunc : function(){that = this;      return function(){         return that.name;      };     } }; alert(object.getNameFunc()()); //The Window
解决方案四:
匿名函数里面this==window
解决方案五:
object.getNameFunc()返回的是一个函数,不是object的属性,那么this自然就指向全局上下文了,不是window是嘛

时间: 2024-07-29 04:43:00

闭包求解释的相关文章

biginteger-Java中n!的代码看不懂啊,求解释

问题描述 Java中n!的代码看不懂啊,求解释 import java.math.BigInteger; import java.util.*; public class Main{ protected static ArrayList table = new ArrayList(); static { table.add(BigInteger.valueOf(1)); } public static synchronized BigInteger factorial(int x) { for

孙鑫-Visual C++的一段代码搞不懂求解释

问题描述 Visual C++的一段代码搞不懂求解释 说一下自己的理解.题目是孙鑫老是的文本输出的例子. 1:GetBkColor得到背景白色,然后SetTextColor(白色)把背景白色设置为文字颜色.跟着clr应该是赋值得到白色了吧,但是F5看的时候是黑色,就要原文字颜色.我这么理解应该错了 1 COLORREF clr=dc.SetTextColor(dc.GetBkColor()); //GetBkColor属于dc对象,改变dc中的背景值(白色).然后SetTextColor用白色值

ancy orm-用FancyForm添加用户角色,求解释这段代码,

问题描述 用FancyForm添加用户角色,求解释这段代码, var form = $('#form').FancyForm({ title: '添加角色' width: 345 height: 325 inputWidth: 190 labelWidth: 60 url: '<%=path %>/sysRoleController/addRole.do' params: { param1: 1 param2:'string' } defaults: { type: 'string' } it

ip地址-求解释下这段代码...感激不尽

问题描述 求解释下这段代码...感激不尽 u_long ulDestIP; u_long ulDestIP1=inet_addr(a); u_long ulDestIP2=inet_addr(b); unsigned long count = ntohl(ulDestIP2 - ulDestIP1)-1; struct in_addr in; unsigned long hostip; for(unsigned int i = 0; i <=count+1; i++) { hostip = nt

下面代码是啥意思 求解释 qt新手

问题描述 下面代码是啥意思 求解释 qt新手 p.drawEllipse(QPoint((i + 1) * 40 (j + 1) * 40) 15 15);是啥意思 解决方案 drawEllipse( x y ab );表示以坐标(xy)为中心画一个长为a宽为b的椭圆以你的代码为例就是绘制一个 中心(40(i+1)40(j+1))长轴(长)为a短轴(宽)为b的椭圆其中ij应该是传入的参数 解决方案二: 在那个区域内绘制椭圆啊 解决方案三: QPoint((i+1)*40, (j+1)*40)坐标

线程-有几百个进程却只有几G的内存,求解释这几百个进程如何共享内存的?

问题描述 有几百个进程却只有几G的内存,求解释这几百个进程如何共享内存的? 我感觉每个进程"占的内存"加起来应该大于物理内存,,怎样的内存管理和调度可以让这几百个进程看起来是一块运行的啊? 解决方案 同一个物理页可以映射到不同进程的地址空间,比如如果多个版本的程序都用同一个Visual C++运行时的DLL,那么只读数据是共享的.一个进程的私有内存才是说占就真占的. 另外,系统会把暂时不用的内存(比如窗口正在被最小化的程序的内存)交换到磁盘上的虚拟内存交换文件,直到下次程序想起来用(比

软件开发-这个报什么错?求解释

问题描述 这个报什么错?求解释 开发-这个报什么错?求解释-pos机报错代码解释"> 解决方案 http://blog.csdn.net/lyc_daniel/article/details/12968843http://blog.hehehehehe.cn/a/10160.htm

指针-么么哒、这题用C语言为什么出现Segmentation fault,求解释并纠错(谢绝新代码)

问题描述 么么哒.这题用C语言为什么出现Segmentation fault,求解释并纠错(谢绝新代码) //依次输出字符串中的数字团,比如poq89ayu1u&129aa //就输出89,129,一共2个数. //萌妹纸诚心诚意求修改 include int main() { char str[80],*pstr; int i=0,flag=1,num=0;pstr=str; gets(str); while(flag==1) { for(i=0;(str+i)!='';i++) { if('

c-C语言输出数字团,代码为什么出现Segmentation fault,求解释并纠错??

问题描述 C语言输出数字团,代码为什么出现Segmentation fault,求解释并纠错?? //题目:输出字符串里数字团,以及个数.比如89cy129 //就输出89,129,一共2个数. 代码在这个百度知道的问题上:well,看来百度知道上面没有人会做? 跪谢!!! 源代码: include int main() { int a[80],i=0,*pa,an=0; char str[80],*pstr=str; void getnum(char pstr); gets(str); get