当前位置: 代码迷 >> Web前端 >> jquery中window=this牛逼
  详细解决方案

jquery中window=this牛逼

热度:222   发布时间:2012-11-25 11:44:31.0
jquery中window=this不简单
(function(){

    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,
    // Map over jQuery in case of overwrite
    _jQuery = window.jQuery,
    // Map over the $ in case of overwrite
    _$ = window.$,

    jQuery = window.jQuery = window.$ = function( selector, context ) {
        // The jQuery object is actually just the init constructor 'enhanced'
        return new jQuery.fn.init( selector, context );
    },..............

jQuery源码中,var window=this ,注释中注明了代码的主要作用是提高效率。
这里有两个问题:
1)函数体中的this是什么值?
2)效率是怎么提升的?


1、要了解第一个问题很容易,在程序中打出this的值,发现打印出来this的结果是[object DOMWindow]。也就是这里的局部变量被赋值为的window对象的引用。函数中this的引用到底指向谁?
关于this,推荐一篇博文:http://www.cnblogs.com/ruxpinsp1/archive/2008/04/20/1162463.html

2、要理解怎么提高效率,首先要了解在javascript中不存在“块级作用域”,变量求值都是通过“作用域链”来进行的。我们常常提到的闭包也是由作用域链为基础的。
关于块级作用域用一下代码说明:
function doSomething(){
	var a=1;
	for(var i=0;i<10;i++){
		a++;
	}
	alert(a);
	alert("循环块中的变量i:"+i);
}

在java类似的语言中,i的作用域只限于for循环体内。而js里面,i的作用域在整个函数体。不存在块级的作用域。这里作者利用了减少作用域链的长度,减少查找,来提高效率。







  相关解决方案