关于js匿名函数以及闭包的学习(一)

关于网上的一个例子一直是一直半解,直到上次和同事讨论之后才明白;

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

此例子涉及到闭包,但是对我最大的困扰确实匿名函数的调用.匿名函数默认的调用都是window对象,这个是很多人都不知道的问题.像上一个例子 输出为"The Window" ,默认的调用就是window对象,this就是widow ,

如果调用写为  alert(object.getNameFunc()().call({name:"test Name"});  则输出的结果为:test Name ,这个就比较直观了.


闭包问题最主要的是作用域链的问题,区分作用域,就不难理解了,但是闭包最大的问题就是占用内存,所有的函数及变量都储存在内存中,这点是一劣势.


自己的一些学习笔记,有点乱了!....  下次好好编辑一下

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。