理解jquery的$.extend()、$.fn和$.fn.extend()

转载 2015年11月19日 22:25:57

原文 http://caibaojian.com/jquery-extend-and-jquery-fn-extend.html

jQuery为开发插件提拱了两个方法,分别是:

jQuery.fn.extend();

jQuery.extend();

jQuery.fn

jQuery.fn = jQuery.prototype = {
   init: function( selector, context ) {//….
//……
};

原来 jQuery.fn = jQuery.prototype.对prototype肯定不会陌生啦。

虽然 javascript 没有明确的类的概念,但是用类来理解它,会更方便。

jQuery便是一个封装得非常好的类,比如我们用 语句 $(“#btn1″) 会生成一个 jQuery类的实例。

jQuery.extend(object)

为jQuery类添加类方法,可以理解为添加静态方法。如:

jQuery.extend({
min: function(a, b) { return a < b ? a : b; },
max: function(a, b) { return a > b ? a : b; }
});
jQuery.min(2,3); //  2 
jQuery.max(4,5); //  5

Objectj Query.extend( target, object1, [objectN])

用一个或多个其他对象来扩展一个对象,返回被扩展的对象

var settings = { validate: false, limit: 5, name: "foo" }; 
var options = { validate: true, name: "bar" }; 
jQuery.extend(settings, options); 
结果:settings == { validate: true, limit: 5, name: "bar" }

jQuery.fn.extend(object);

对jQuery.prototype进得扩展,就是为jQuery类添加“成员函数”。jQuery类的实例可以使用这个“成员函数”。

比如我们要开发一个插件,做一个特殊的编辑框,当它被点击时,便alert 当前编辑框里的内容。可以这么做:

$.fn.extend({              alertWhileClick:function() {                      $(this).click(function(){                                  alert($(this).val());                      });                }       
});       
$("#input1").alertWhileClick(); // 页面上为:    

$("#input1") 为一个jQuery实例,当它调用成员方法 alertWhileClick后,便实现了扩展,每次被点击时它会先弹出目前编辑里的内容。

jQuery.extend() 的调用并不会把方法扩展到对象的实例上,引用它的方法也需要通过jQuery类来实现,如jQuery.init(),而 jQuery.fn.extend()的调用把方法扩展到了对象的prototype上,所以实例化一个jQuery对象的时候,它就具有了这些方法,这 是很重要的,在jQuery.JS中到处体现这一点

jQuery.fn.extend = jQuery.prototype.extend

你可以拓展一个对象到jQuery的 prototype里去,这样的话就是插件机制了。

(function( $ ){
$.fn.tooltip = function( options ) {
};
//等价于
var tooltip = {
function(options){
}
};
$.fn.extend(tooltip) = $.prototype.extend(tooltip) = $.fn.tooltip
})( jQuery );

jquery的$.extend和$.fn.extend的使用详解

 Jquery.extend() 可以理解成为 Jquery 类添加静态方法,扩展方法原型是: 1 extend(dest,src1...
  • qw222pzx
  • qw222pzx
  • 2016年11月30日 10:52
  • 2184

js插件之$.extend()、$.fn和$.fn.extend()区别

jQuery为开发插件提拱了两个方法,分别是:原文来自:http://caibaojian.com/jquery-extend-and-jquery-fn-extend.html jQuery.fn....
  • yummy_go
  • yummy_go
  • 2017年01月11日 10:05
  • 703

JQuery添加扩展方法(理解$.extend(),与$.fn.extend()方法区别)

理解$.extend(),与$.fn.extend()方法区别 1.$.extend()方法 $.extend()方法在JQuery中有两个用法,第一次是扩展方法, 第二个方法是 ...
  • prettywhitewolf_xiao
  • prettywhitewolf_xiao
  • 2012年06月13日 14:58
  • 6288

jQuery 版本viewer.js插件的结构分析与学习

jQuery 版本viewer.js插件的结构分析与学习(function(factory){ if (typeof define === 'function' && define.amd) { ...
  • cc_fys
  • cc_fys
  • 2017年12月17日 16:55
  • 176

理解jquery的$.extend()、$.fn和$.fn.extend()

 jQuery为开发插件提拱了两个方法,分别是: jQuery.fn.extend(); jQuery.extend(); jQuery.fn jQuery.fn = jQuery.pr...
  • wauit
  • wauit
  • 2014年11月18日 13:23
  • 636

$.fn,$.extend(),$.fn.extend(),$.extend($.fn,{})

$.fnjQuery.fn 其实是 jQuery对象的原型,也就是jQuery.fn=jQuery.prototype所以我们就可以用来给jquery的原型添加方法或者属性,那么所有jquery的实例...
  • disiwei1012
  • disiwei1012
  • 2016年08月16日 22:58
  • 375

Jquery中(function($){...})(jQuery),$(function(){}),$.extend(object)和$.fn.extend(object)

1.(jQuery(function($){...})(jQuery):     匿名函数:function($){...}参数为$、function(arg){...}参数为arg。     调用匿...
  • zhulongxi
  • zhulongxi
  • 2016年05月19日 10:02
  • 1648

每日学习心得:$.extend()方法和(function($){...})(jQuery)详解

2014-02-09 前言:     节后头两天上班,主要是调整工作状态。项目也不是很紧,趁着周末把年前遇到了一些关于JS和JQuery的一些问题给总结一下。主要是介绍JQuery的extend方...
  • xuemoyao
  • xuemoyao
  • 2014年02月09日 23:47
  • 42617

$.fn和jquery的extend和fn.extend 。

转自:http://www.jb51.net/article/42750.htm $.fn是指jquery的命名空间,加上fn上的方法及属性,会对jquery实例每一个有效,下面简单为大家介绍下jq...
  • suyu_yuan
  • suyu_yuan
  • 2016年09月28日 14:35
  • 155

jquery的$.extend()、$.fn和$.fn.extend()

jQuery为开发插件提拱了两个方法,分别是: jQuery.fn.extend(); jQuery.extend();· jQuery.fn jQuery.fn = jQuery.proto...
  • qq_21439971
  • qq_21439971
  • 2017年04月21日 09:36
  • 94
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:理解jquery的$.extend()、$.fn和$.fn.extend()
举报原因:
原因补充:

(最多只允许输入30个字)