现在,我发现JavaScript最有质量的文章是来自博客园。这句话真的不假,因为其他的论坛什么的,已经是没什么人再去讨论了。然后,再说说,今日所阅读的文章,真的像拾宝一样,我很开心。基础的知识,虽然知道了很久,但是你再花心思看多一次,得到的是不同的收获,我终于明白了这一点。
举个例子:
var name = "Global name"; function funcA(){ var name = "FuncA name"; return function(){ alert(this.name); }; } funcA()(); //Global name
这个例子,过去的经验告诉我,返回一个匿名函数,this指向的是window。是谁告诉我的?我是听别人说的,所以我就理所当然地觉得就是这个样子了。但是当我看了文章后,我知道了原理。原来是这个this是跟作用域没什么关系,其实this就是简单指向调用这个函数的对象。
换句话说,funcA()();也可以写成:
window.funcA()();
所以这里this其实指向window,那么this.name自然就变成:
alert(window.name);
http://www.cnblogs.com/leoo2sk/archive/2010/12/19/ecmascript-scope.html
http://www.cnblogs.com/leoo2sk/archive/2011/01/12/ecmascript-function.html
http://www.cnblogs.com/leoo2sk/archive/2011/01/16/function-declaration-and-expression.html