关于网上的一个例子一直是一直半解,直到上次和同事讨论之后才明白;
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 ,这个就比较直观了.
闭包问题最主要的是作用域链的问题,区分作用域,就不难理解了,但是闭包最大的问题就是占用内存,所有的函数及变量都储存在内存中,这点是一劣势.
自己的一些学习笔记,有点乱了!.... 下次好好编辑一下
原文:http://ample.blog.51cto.com/3936501/1623923