menu

开发进行时...

crazy coder

Avatar

jquery window=this

网上闲逛,看到有对jquery源码中window=this的解释

var 
 // Will speed up references to window, and allows munging its name.
 window = this,
 // Will speed up references to undefined, and allows munging its name.
 undefined

奇怪的是munging 这个单词查不到...

speed up references to window所谓的提高性能是避免每次使用window时都需要向上级作用域查找。
具体参考http://www.blogjava.net/hulizhong/archive/2009/11/05/301323.html

然而,完全理解还必须

1、理解javascript中的this

1)对象的方法中的this指向当前对象
2)函数中的this指向window

这个理解其实挺复杂的,具体的必需阅读: http://mcarthurgfx.com/blog/article/4-ways-functions-mess-with-this

2、javascript的作用域
函数作用域
javascript这个特殊的函数作用域的估计叫"Lexical scoping"
http://blogs.msdn.com/kartikb/archive/2009/01/15/lexical-scoping.aspx

另外javascript没有块级作用域
如下面的代码在java或.net当中都很好理解的
var myVar = 'global';
function f(){alert(myVar); var myVar = 'local'; alert(myVar);}
并不是预想的那样提示global,local...


附:jquery早期源码不是这样的写法

JQuery1.1.2代码18行
if ( window == this )
return new jQuery(a,c);


曾(2.5年前)对此代码困惑不已,当然一直未曾深究...
不想现在没这句代码了...