码迷,mamicode.com
首页 > Web开发 > 详细

Web前端学习第二篇

时间:2014-08-05 19:02:49      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:blog   http   java   使用   os   io   ar   cti   

今天看到了一篇写的不错的文章,是有关对JQuery、js等一些源代码初识的内容,感觉写的还是不错,所以拿过来分享一下。

文章的地址:http://my249645546.iteye.com/blog/1716629

1.对(function(){})();

几乎所有的开源js代码开篇都是这样(function(……){……})(……);

下面是Jquery的部分源码:

(function( window, undefined ) {  
    var jQuery = function( selector, context ) {  
        // The jQuery object is actually just the init constructor ‘enhanced‘  
        return new jQuery.fn.init( selector, context );  
    },  
  
    // Map over jQuery in case of overwrite  
    _jQuery = window.jQuery,  
  
    // Map over the $ in case of overwrite  
    _$ = window.$,  
    ……  
    indexOf = Array.prototype.indexOf;  
  
    // Expose jQuery to the global object  
    window.jQuery = window.$ = jQuery;  
})(window);   

那么这个操作符(function(){})();到底是什么意思呢?

(function(){})中的定义了一个function,紧接着的()表示立即执行这个function。

我们看到Jquery源码第一个()中是定义了一个匿名function( window, undefined ) {};接着末尾有个(window),就表示执行这个匿名function,并传入参数window。

在匿名function( window, undefined ) {}中,定义了一个局部变量jQuery;然后在末尾我们看到Jquery末尾有一句 window.jQuery = window.$ = jQuery; 这句代码就表示,将此前定义的jQuery导出到window对象。这也是为什么我们可以在代码任何地方直接使用$、jQuery对象,因为在这里已经将$、jQuery对象挂载到window下去了,而window.$、window.jQuery与直接使用$、jQuery是没有区别的。

(注意,这个window对象是传入的参数window,而不是浏览器window对象!!一个形参、一个实参。我们可以在定义function的时候,将参数window取名为其他字符。所以我们看到jquery.min.js中这个匿名function变成了(function(E,B){})(window);)

通常(function(){})()用来封装一些私有成员或者公共成员的导出。

 

这个其他的内容我就不从那篇文章上抄了,大家还是看那边文章吧!呵呵....

文章的地址:http://my249645546.iteye.com/blog/1716629

Web前端学习第二篇,布布扣,bubuko.com

Web前端学习第二篇

标签:blog   http   java   使用   os   io   ar   cti   

原文地址:http://www.cnblogs.com/hjlost/p/3892822.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!