现在的位置: 首页 > 综合 > 正文

jQuery语法中的三个对比

2013年10月11日 ⁄ 综合 ⁄ 共 1303字 ⁄ 字号 评论关闭

最近下载了一个jQuery编写的纸牌游戏来学习,收获很大,可以说是颠覆了我对jQuery的一些看法。

首当其冲的就是jQuery中的几种不同语句写法的对比,在网上搜索一番之后,转载如下:

jQuery(function() {...}) vs. (function() {...})(jQuery)

原文地址:http://eason26-li.iteye.com/blog/520188

一、先看 

jQuery(function(){ 
}); 
全写为 
jQuery(document).ready(function(){ 
      
}); 

意义为在DOM加载完毕后执行了ready()方法。 
二、再看 

(function(){ 

})(jQuery); 
其实际上是执行()(para)匿名方法,只不过是传递了jQuery对象。 

三、总结 

jQuery(function(){ });用于存放操作DOM对象的代码,执行其中代码时DOM对象已存在。不可用于存放开发插件的代码,因为jQuery对象没有得到传递,外部通过jQuery.method也调用不了其中的方法(函数)。 
(function(){ })(jQuery);用于存放开发插件的代码,执行其中代码时DOM不一定存在,所以直接自动执行DOM操作的代码请小心使用。 

$.extend vs. $.fn.extend

上一篇分析了jQuery对象的组成,这篇分析下它的extend方法。如下

?
1
2
3
jQuery.extend
= jQuery.fn.extend =
function()
{
     ...
};

我们可以用$.extend去扩展自定义的对象,如

?
1
2
3
var

myself = {name:jack};
$.extend(myself,
{setName:
function(n){this.name=n;}
});
myself.setName("tom");

通过$.extend为对象myself添加了setName方法。但这里主要讨论$.extend如何构建jQuery库的。不知注意到上面代码中jQuery.extend和jQuery.fn.extend是同一个函数。我们浏览下jQuery库,发现有些方法是通过调用jQuery.extend扩展的,有些则是通过调用jQuery.fn.extend扩展的。


下面分别讨论:

1,通过jQuery.extend扩展 

我们知道jQuery.extend中的jQuery类型是function,即typeof jQuery值为字符串“function”。如果把jQuery当成一个类,jQuery.extend相当于为该类添加了静态方法extend。静态方法是不需要new一个实例再去调用的,通过“类名+方法名”直接调用。即jQuery.extend(...),jQuery又被赋值给$。因此我们更习惯$.extend(...)。
源码中直接调用jQuery.extend方法,只传一个参数。如下

?
1
2
3
4

抱歉!评论已关闭.