`
somebody_hjh
  • 浏览: 180735 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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的作用域在整个函数体。不存在块级的作用域。这里作者利用了减少作用域链的长度,减少查找,来提高效率。







分享到:
评论

相关推荐

    jQuery详细教程

    您也许已经注意到在我们的实例中的所有 jQuery 函数位于一个 document ready 函数中: $(document).ready(function(){ --- jQuery functions go here ---- }); 这是为了防止文档在完全加载(就绪)之前运行 jQuery...

    jQuery弹出窗口简单实现代码

    今天讲了Jquery的弹出窗口的组成和用法: 先把引用文件的代码写好: // 每个弹窗的标识 var x =0; var idzt = new Array(); var Window = function(config){ //ID不重复 idzt[x] = zhuti+x; //弹窗ID //初始化,...

    jQuery完全实例.rar

    Everything in jQuery is based upon this, or uses this in some way. The most basic use of this function is to pass in an expression (usually consisting of CSS), which then finds all matching elements....

    图库新版jQuery焦点图 JS代码

    tips[15] = '真实世界中人们总是不得不被迫接受一些信息;而在网络世界,遇到反感内容,他们往往“关掉浏览器跑掉了”。'; tips[16] = '在追求完美的路上,可能会思考太多,反而让双手闲着。'; tips[17] = '搜索引擎...

    jquery图片不完全按比例自动缩小的简单代码

    代码如下:jQuery(document).ready(function(){ /* 图片不完全按比例自动缩小*/ $(window).load(function(){$(‘#content div.thumbnail img’).each(function(){ var x = 200; //填入目标图片宽度 var y =...

    jQuery实现下拉加载功能实例代码

    废话不多说了,直接给大家贴代码了,具体代码如下所示: [removed] ...if ($(this).scrollTop() + $(window).height() + 10 &gt;= $(document).height() && $(this).scrollTop() &gt; 10) { //if(stop==true){

    利用JQuery操作iframe父页面、子页面的元素和方法汇总

    iframe在复合文档中经常用到,利用jquery操作iframe可以大幅提高效率,本文主要给大家分享了关于简单使用JQUERY来操作IFRAME的一些记录,这个使用纯JS也可以实现。下面话不多说了,来一起看看详细的介绍吧。 第一、...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -一个典型应用,在Window控件中打开新页面,如果传递的参数不正确,则首先提示参数不对然后关闭此弹出窗口。 -ExtAspNet.Alert.Show("参数错误!", String.Empty, ExtAspNet.ActiveWindow.GetCloseReference());...

    ExtAspNet_v2.3.2_dll

    -一个典型应用,在Window控件中打开新页面,如果传递的参数不正确,则首先提示参数不对然后关闭此弹出窗口。 -ExtAspNet.Alert.Show("参数错误!", String.Empty, ExtAspNet.ActiveWindow.GetCloseReference());...

    懒加载实现的分页&&网站footer自适应

    最近在做手机端,发现下拉刷新和上拉加载的jq控件很少而且自我感觉不好用,比如... if($(this).scrollTop() &gt; ($(window).height() * current - 150)) {//这里的150表示距离底部150像素触发,可自行调节 current++;

    js设计模式源码

    &lt;script type="text/javascript" src="js/jquery.js"&gt; &lt;h2&gt;Media(中介者)模式 行为设计模式。公开一个统一的接口,系统的不同部分可以通过该接口进行通信。 确保组件的交互是通过这个中心点来处理,而...

    大名鼎鼎SWFUpload- Flash+JS 上传

    什么是SWFUpload?  SWFUpload是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合Flash与JavaScript技术为WEB开发者提供了一个具有丰富...SWFpload必须在页面中初始化,一般可以在window.onload事件中...

    CodedUI.jQueryExtensions

    它将允许您使用jQuery选择器在被测页面中选择内容。它给我什么? #方法public static IEnumerable &lt; T&gt; JQuerySelect ( this BrowserWindow window , string selector ) public static bool JQueryExists ( this ...

Global site tag (gtag.js) - Google Analytics