Jquery中$与$.fn的区别
当今web开发往往离不开Jquery的使用,Jquery以其简洁的使用方式、良好的浏览器兼容性赢得了软件研发同行的青睐,作为其中的一员,自然也不例外,尽管刚开始时很排斥Jquery,今天我谈一下对Jquery中$与$.fn的认识和理解,不对地方深望指正:
1、什么是$?
答:jquery的另一种表现形式;
2、看下面的例子:
例子01:

1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
4 <title>$与$.fn的区别——demo 01</title>
5 <script type="text/javascript" src="./jquery-1.6.2.js"></script>
6 <script type="text/javascript">
7 $.test = function(a,b) {
8 return a+b;
9 };
10 alert($.test(4,4));
11 </script>
12 </head>
13 <body>
14 </body>
15 </html>

2.

1 例子02:
2
3 <html>
4 <head>
5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
6 <title>$与$.fn的区别——demo 02</title>
7 <script type="text/javascript" src="./jquery-1.6.2.js"></script>
8 <script type="text/javascript">
9 $.extend({
10 test:function(a,b) {
11 return a+b;
12 }
13 });
14 alert($.test(4,4));
15 </script>
16 </head>
17 <body>
18 </body>
19 </html>

上面两个例子中的黄色背景出的代码有什么不同和相同?
答:除了功能相同以外最大的相同点在于调用函数(或方法)的方式相同;上面两个例子最大的不同点在于声明创建test方法的方式不同。
3、看下面的例子:
例子03:

1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
4 <title>$与$.fn的区别——demo 03</title>
5 <script type="text/javascript" src="./jquery-1.6.2.js"></script>
6 <script type="text/javascript">
7 $.fn.test = function() {
8 return $(this).val();
9 };
10 $(function(){
11 alert($("#name").test());
12 });
13 </script>
14 </head>
15 <body>
16 <input type="hidden" id="name" name="name" value="高焕杰"/>
17 </body>
18 </html>

例子04:

1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
4 <title>$与$.fn的区别——demo 04</title>
5 <script type="text/javascript" src="./jquery-1.6.2.js"></script>
6 <script type="text/javascript">
7 $.fn.extend({
8 test:function() {
9 return $(this).val();
10 }
11 });
12 $(function(){
13 alert($("#name").test());
14 });
15 </script>
16 </head>
17 <body>
18 <input type="hidden" id="name" name="name" value="高焕杰"/>
19 </body>
20 </html>

上面两个例子中的绿色背景出的代码有什么不同和相同?
答:除了功能相同以外最大的相同点在于调用函数(或方法)的方式相同;上面两个例子最大的不同点在于声明创建test方法的方式不同。
4、Jquery中$与$.fn的区别是什么?
答:在回答这个问题以前,需要明白一个事实:Jquery的方法是可以拓展的,上面这4个例子都是对Jquery方法的拓展,从调用声明创建方法的方式来看,可以归结为两类:一类直接由$符调用;另一类由$("")来调用,说到这里你是不是想到了Java语言中的静态方法和实例方法,是的,如果从java类的角度认识调用创建的Jquery方法可能更好理解些,尽管Javascript没有明确的类的概念。好了现在可以回答问题了:$拓展的方法是静态方法,可以使用$直接调用,其拓展的方式有两种,一般使用$.extend({});;而$.fn拓展的方法是实例方法,必须由“对象”$("")来调用,其拓展的方式同样有两种,一般使用$.fn.extend({ })。
5、知识延展,究竟什么是fn?
答:同样在回答这样一个问题以前请打开一个Jquery文件(0分下载) 搜索这样一个字符“jQuery.prototype”,告诉我你看到了什么:jQuery.fn = jQuery.prototype = {......},嗯嗯,或许你已经猜到了——fn就是prototype,是这样吗?请看下面的两个例子:
例子05:

1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
4 <title>$与$.fn的区别——demo 05</title>
5 <script type="text/javascript" src="./jquery-1.6.2.js"></script>
6 <script type="text/javascript">
7 $.prototype.test = function() {
8 return $(this).val();
9 };
10 $(function(){
11 alert($("#name").test());
12 });
13 </script>
14 </head>
15 <body>
16 <input type="hidden" id="name" name="name" value="高焕杰"/>
17 </body>
18 </html>

例子06:

1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
4 <title>$与$.fn的区别——demo 06</title>
5 <script type="text/javascript" src="./jquery-1.6.2.js"></script>
6 <script type="text/javascript">
7 $.prototype.extend({
8 test:function() {
9 return $(this).val();
10 }
11 });
12 $(function(){
13 alert($("#name").test());
14 });
15 </script>
16 </head>
17 <body>
18 <input type="hidden" id="name" name="name" value="高焕杰"/>
19 </body>
20 </html> http://www.cnblogs.com/sharpest/p/6271039.html
Jquery中$与$.fn的区别的更多相关文章
- jquery的$.与$.fn的区别
这个是jquery插件的形式,举个例子: <div id="myDiv"></div> (function($){ $.fn.extend({ test:f ...
- jQuery extend()和jQuery.fn.extend()区别和详解
1.认识jQuery extend()和jQuery.fn.extend() jQuery的API手册中,extend方法挂载在jQuery和jQuery.fn两个不同对象上方法,但在jQuery内部 ...
- $.extend() 或 jQuery.extend() 与 $.fn.Xxx 或 jQuery.fn.extend(object) 之jQuery插件开发
jQuery为开发插件提拱了两个方法 语法现象1:$.extend() 或 jQuery.extend() 或 jQuery.extend(object)//可以理解为为jQuery类添加类方法或静态 ...
- jQuery介绍 DOM对象和jQuery对象的转换与区别
jQuery介绍 DOM对象和jQuery对象的转换与区别 jQuery介绍 jQuery: http://jquery.com/ write less, do more. j ...
- Jquery中$与$.fn的差别
当今web开发往往离不开Jquery的使用,Jquery以其简洁的使用方式.良好的浏览器兼容性赢得了软件研发同行的青睐,作为当中的一员,自然也不例外,虽然刚開始时非常排斥Jquery,今天我谈一下对J ...
- jquery中onclick="fn"中$(this)所代表的对象
jquery中onclick="fn"中$(this)所代表的对象 js方法 function qiehuan(){ var src = $(this).attr("da ...
- jquery生产和开发的区别
今天说一下jquery生产和开发的区别,在我们下载jquery的时候,会有两个下载链接,一个是jquery.min.js .迷你版 (生产),另一个是 jquery.js .开发版 .不知道的人可能就 ...
- JQuery this和$(this)的区别及获取$(this)子元素对象的方法
1.JQuery this和$(this)的区别 相信很多刚接触JQuery的人,很多都会对$(this)和this的区别模糊不清,那么这两者有什么区别呢? 首先来看看JQuery中的 $() 这 ...
- jquery中的$.fn的用法
JQuery里的原型prototype分析 http://www.nowamagic.net/librarys/veda/detail/653 jquery中的$.fn的用法 ...
随机推荐
- pageadmin网站制作 怎么验证sql用户名和密码的正确性
使用pageadmin建站系统的时候,不懂可以参考官网教程. 1.打开SQL Server Management Studio会弹出如下界面. 第一个箭头指向的就是服务器名称,如果用ip无法连接sql ...
- 私有成员的设置和访问方式——setter和getter
在定义类时,为了保证类中成员数据安全性及的封装性,防止成员数据值被任意修改,通常将类中成员属性用private进行修饰. 被private修改的成员属性,只能在类中访问,跳出本类后,就无法直接访问. ...
- Struts2运行原理
一个请求在Struts2框架中的处理大概分为以下几个步骤: 1 客户端发送请求:2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤 ...
- 【3】JMicro微服务-服务超时,重试,重试间隔
如非授权,禁止用于商业用途,转载请注明出处作者:mynewworldyyl 接下来的内容都基于[2]JMicro微服务-Hello World做Demo 微服务中,超时和重试是一个最基本问题下面Dem ...
- mysql工具——mysqlcheck(MYISAM)
基本介绍 演示: 使用optimize的时候,可能会出现 Table does not support optimize, doing recreate + analyze instead 这时候参考 ...
- [温故]图解java多线程设计模式(一)
去年看完的<图解java多线程设计模式>,可惜当时没做笔记,导致后来忘了许多东西,打算再温习下这本书,顺便在这里记录一下~ 1.顺序执行.并行.并发 顺序执行:多个操作按照顺序依次执行. ...
- 利用ReentrantLock简单实现一个阻塞队列
借助juc里的ReentrantLock实现一个阻塞队列结构: package demo.concurrent.lock.queue; import java.util.concurrent.lock ...
- 【性能压测】:MQ队列异步处理机制导致的系统无法接受请求的问题
一,最近压测系统交易峰值时,因该支交易采用MQ异步队列处理机制:该增加积分的交易,前段服务器优先返回给客户增加积分成功的结果,后端的MQ队列服务器再慢慢处理该请求: 二,压测过程中出现的问题现象:前几 ...
- Neo4j安装&入门&一些优缺点(转)
本篇将介绍Neo4j的安装,入门,和自己使用了一段时间后发现的优点缺点,争取简洁和实用. 如果你是第一次接触Neo4j,并且之前也都没接触过类似的Graph Database的话,建议先浏览一下我之前 ...
- Unity 依赖注入
关于Ioc的框架有很多,比如astle Windsor.Unity.Spring.NET.StructureMap,我们这边使用微软提供的Unity做示例,你可以使用Nuget添加Unity,也可以引 ...