jQuery.fn的作用是什么:
在自定义jQuery插件中,会经常见到jQuery.fn的身影,下面就简单介绍一下它的作用到底是什么。
想要认识它的本质,最好的办法直接看jQuery的源码,否则一切都是根据现象进行的猜测,难免出现失误。
jQuery1.83中的代码如下:

[HTML] 纯文本查看 复制代码运行代码
1
2
3
jQuery.fn = jQuery.prototype = {
   //代码
}

由上面的代码可以清晰的看出jQuery.fn执行jQuery的原型对象。
明白了上面的道理也可以有助于对其他函数的理解,例如

[HTML] 纯文本查看 复制代码运行代码
1
jQuery.fn.extend(object)

以上代码可以为jQuery对象添加方法,可以和以下方法一起学习:

[HTML] 纯文本查看 复制代码运行代码
1
jQuery.extend(object);

以上代码可以为jQuery"类"添加方法,当然js中并没有类这个概念,不过就是那个意思。
相关阅读:
1.jQuery.extend()函数可以参阅jQuery.extend()方法一章节。

2.jQuery.fn.extend()函数可以参阅$.extend()和$.fn.extend()区别一章节。

jQuery.extend()方法的定义和用法:
此方法用一个或多个其他对象来扩展一个对象,并返回被扩展的对象。
这有助于插件作者为jQuery增加新方法。
语法结构:

[HTML] 纯文本查看 复制代码运行代码
1
jQuery.extend(deep, target, object1,object2,.. objectN)

参数列表:

参数 描述
deep 可选。如果设为true,则递归合并。
target 可选。待修改对象。
object1 待合并到第一个对象的对象。
objectN 可选。待合并到第一个对象的对象。

如果不指定target,则给jQuery命名空间本身进行扩展。
如果第一个参数设置为true,则jQuery返回一个深层次的副本,递归地复制找到的任何对象。否则的话,副本会与原对象共享结构。
未定义的属性将不会被复制,然而从对象的原型继承的属性将会被复制。
代码实例:

[HTML] 纯文本查看 复制代码运行代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>$.extend()用法详解-蚂蚁部落</title>
<script type="text/javascript" src="http://www.softwhy.com/mytest/jQuery/jquery-1.8.3.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  var settings={validate:false,limit:5,name:"foo"};
  var options={validate:true,name:"bar"};
  $.extend(settings,options);
  $.each(settings,function(i,n){
    alert("Item #" + i + ":"+ n);
  })
})
</script>
</head>
<body>
</body>
</html>

注意:运行编辑器之后,再按F5刷新网页即可查看演示。

$.extend()和$.fn.extend()用法和区别:
在自己制作插件的时候会经常用到$.extend()和$.fn.extend()两个函数,无论从外观还是作用都非常的类似,但是实际上它们的区别是巨大的,下面就简单介绍一下它们的区别是什么。
在javascript中,没有尽管没有类这个概念,但是作为一门面向对象的语言,其实是有着类似于类的实际应用,那么从标准面向对象的概念来说,jQuery就是一个封装好了的jQuery类,那么通过选择器获得的就是jQuery对象实例。
一.$.extend():
此方法是用来扩展jQuery类,它所方法是全局性,直接用jQuery类即可引用,例如:

[HTML] 纯文本查看 复制代码运行代码
1
2
$.extend({minValue:function(a,b){return a<b?a:b;}})
$.minValue(5.6);

一般也可以把这类函数称作为工具函数,它们不直接操作DOM元素,而是操作Javascript的非元素对象,或者执行其他非对象的特定操作。
更多相关$.extend()函数的用法可以参阅$.extend()函数用法详解一章节。
二.$.fn.extend():
此方法则是用来扩展jQuery的实例方法,也就是说jQuery类的实例对象可以调用此函数,代码如下:

[HTML] 纯文本查看 复制代码运行代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
<script type="text/javascript">
$(document).ready(function(){
   $.fn.extend({
   theAlert:function(){
      alert("自定义的函数");
    }
  })
  $("thediv").theAlert()
})
</script>
</head>
<body>
  <div id="thediv">按钮</div>
</body>
</html>

以上代码通过$.fn.extend()方法为jQuery扩展一个实例方法,那么就必须要用对象实例来调用此方法,$("thediv")就是一个对象实例,这样它就可以调用添加的方法,当然在实际的开发中,几乎不可能有这么简单的例子,这里只是讲述一下原理。

jQuery.fn的作用是什么的更多相关文章

  1. jQuery - jQuery的$.extend和$.fn.extend作用及区别

    jQuery为开发插件提拱了两个方法,分别是: 1. jQuery.fn.extend(); 2. jQuery.extend(); 虽然 javascript没有明确的类的概念,但是可以构建类似类的 ...

  2. jquery的$.extend和$.fn.extend作用及区别.txt

    jQuery为开发插件提拱了两个方法,分别是: jQuery.fn.extend(); jQuery.extend(); (1)类级别 类级别你可以理解为拓展jquery类,最明显的例子是$.ajax ...

  3. jquery的$.extend和$.fn.extend作用及区别

    jQuery为开发插件提拱了两个方法,分别是: jQuery.fn.extend(); jQuery.extend(); (1)类级别 类级别你可以理解为拓展jquery类,最明显的例子是$.ajax ...

  4. jquery的$.extend和$.fn.extend作用及区别/用span实现进度条/腾讯云IIS端口号修改

    jQuery为开发插件提拱了两个方法,分别是: jQuery.fn.extend(); jQuery.extend(); 虽然 javascript 没有明确的类的概念,但是用类来理解它,会更方便. ...

  5. jquery.fn.extend() 与 $.jquery 作用及区别

    原文:http://www.cnblogs.com/liu-l/p/3928373.html jQuery.extend()这个方法,主要是用来拓展个全局函数啦,例如$.ajax()这种,要不就是拓展 ...

  6. jQuery中 $.extend 和 $.fn.extend 作用及区别

    jQuery为开发插件提拱了两个方法,分别是: 1. jQuery.fn.extend(); 2. jQuery.extend(); 虽然 javascript没有明确的类的概念,但是可以构建类似类的 ...

  7. 区别和详解:jQuery extend()和jQuery.fn.extend()

    1.认识jQuery extend()和jQuery.fn.extend() jQuery的API手册中,extend方法挂载在jQuery和jQuery.fn两个不同对象上方法,但在jQuery内部 ...

  8. jQuery源码-dom操作之jQuery.fn.html

    写在前面 前面陆陆续续写了jQuery源码的一些分析,尽可能地想要cover里面的源码细节,结果导致进度有些缓慢.jQuery的源码本来就比较晦涩,里面还有很多为了解决兼容问题很引入的神代码,如果不g ...

  9. jQuery源码-dom操作之jQuery.fn.text

    写在前面 jQuery.fn.text在jQuery是个使用频率比较高的接口,它的作用无非是设置/获取dom节点的内容文本,下文会通过几个简单的例子来说明.text()接口的使用,以及最后会对源码进行 ...

随机推荐

  1. Head First设计模式之迭代器模式

    一.定义 提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示: 主要解决:不同的方式来遍历整个整合对象. 何时使用:遍历一个聚合对象. 如何解决:把在元素之间游走的责任交给迭代 ...

  2. Kill 进程

      动态杀各种进程,谨慎操作:事例 status='sleeping'   --AUTHOR      KiNg --DATE        2016-05-30 DECLARE @SPID INT ...

  3. vue2 递归组件--树形

    递归组件,官方给的教程太简便了,根本看不出到底怎么用.于是自己查网摸索了一下,这儿只把核心思想写出来. 效果如下图,点击后打开二级菜单,再点击后打开三级. //js //引子//思想:当v-if='f ...

  4. Robot Framework学习笔记(四)------Screenshot 库屏幕截图

    Scrennshot 同样为 Robot Framework 标准类库,我们只将它提供的其它中一个关键字"TakeScreenshot",它用于截取到当前窗口. 1.导入Scren ...

  5. T-SQL逻辑查询处理

    引言 本文是对<Microsoft SQL SERVER 2008技术内幕 T-SQL查询>中的第一章做的阅读笔记,这一章的主要内容是分析SQL查询中各子句的执行顺序.如果你对此已了然于胸 ...

  6. socket模型处理多个客户端

    最近学完了简单的socket编程,发现其实socket的网络编程其实并没有什么难度,只是简单的函数调用,记住客户端与服务端的步骤,写起来基本没有什么问题. 在服务器程序的设计中,一个服务器不可能只相应 ...

  7. Redis 部署主从哨兵 C#使用,实现自动获取redis缓存 实例1

    源码示例下载链接: https://pan.baidu.com/s/1eTA63T4 密码: un96 实现目标:windows 下安装 一台master服务 一台salve redis服务器 并且哨 ...

  8. 嵌入式Tomcat容器的参数(maxParameterCount)设定

    背景 昨天同事遇到了error一起看了一下感觉比较重要在这记录一下 基本情况是页面上选中9K+的数据向后台发送请求,然后系统就崩了... error信息如下 More than the maximum ...

  9. Java与算法之(1) - 冒泡排序

    冒泡排序法的原理是,每次比较相邻的两个元素,如果它们的顺序错误就把它们交换过来. 例如对4 3 6 2 7 1 5这7个数字进行从小到大的排序,从最左侧开始,首先比较4和3 因为是从小到大排序,4和3 ...

  10. JaveScript数组(JS知识点归纳五)

    1.概念 a)作用--用于保存多个数据,便于对数据的使用 b)数组元素--数组中的数据 c)索引--数组中的元素按照下标(数值)的方式排列(从0 开始),依次递增(也有可能是字符串的类型--不用) d ...