JQuery $ $.extend(),$.fn和$.fn.extend javaScript对象、DOM对象和jQuery对象及转换 工具方法(utility)
一、为什么jquery前面要写$
二、$.fn $.extend() $.fn.extend
理解jquery的$.extend()、$.fn和$.fn.extend() jQuery插件开发模式
2.1 $.fn
原来 jQuery.fn = jQuery.prototype.对prototype肯定不会陌生啦。
虽然 javascript没有明确的类的概念,但是用类来理解它,会更方便。
jQuery便是一个封装得非常好的类,比如我们用 语句 $(“#btn1″) 会生成一个 jQuery类的实例。
2.2 $.extend()
When two or more object arguments are supplied to
$.extend()
, properties from all of the objects are added to the target object. Arguments that arenull
orundefined
are ignored.If only one argument is supplied to
$.extend()
, this means the target argument was omitted. In this case, the jQuery object itself is assumed to be the target. By doing this, you can add new functions to the jQuery namespace. This can be useful for plugin authors wishing to add new methods to JQuery.Keep in mind that the target object (first argument) will be modified, and will also be returned from
$.extend()
. If, however, you want to preserve both of the original objects, you can do so by passing an empty object as the target:
2.2.1. $.extend(object)
为jQuery类添加类方法,可以理解为添加静态方法 是在jQuery命名空间或者理解成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
2.2.2. $.extend( target, object1, [objectN])
用一个或多个其他对象来扩展一个对象,返回被扩展的对象
1 var settings = { validate: false, limit: 5, name: "foo" }; 2 var options = { validate: true, name: "bar" }; 3 jQuery.extend(settings, options); 4 结果:settings == { validate: true, limit: 5, name: "bar" }
2.3 $.fn.extend(object)
对jQuery.prototype进得扩展,就是为jQuery类添加“成员函数”。jQuery类的实例可以使用这个“成员函数”。
1 $.fn.extend({ // 方法 是在jQuery的prototype属性上扩展的,自然实例可以使用此方法 2 alertWhileClick:function() { // 和 $.extend() 道理一样,只是一个是扩展在Jquery上,一个是扩展在Jquery.prototype上 3 $(this).click(function(){ 4 alert($(this).val()); 5 }); 6 } 7 }); 8 $("#input1").alertWhileClick(); // 页面上为:
三、javaScript对象、DOM对象和jQuery对象
JavaScript 对象、DOM对象、jquery对象的区别、转换详解
javaScript对象:
JavaScript 中的所有事物都是对象:字符串、数值、数组、函数...
JavaScript 提供多个内建对象,比如 String、Date、Array 等等。
DOM对象:
DOM实际上是以面向对象方式描述的文档模型。DOM定义了表示和修改文档所需的对象、这些对象的行为和属性以及这些对象之间的关系。
根据W3C DOM规范,DOM是HTML与XML的应用编程接口(API)。
通过 DOM,可以访问所有的 HTML 元素,连同它们所包含的文本和属性。可以对其中的内容进行修改和删除,同时也可以创建新的元素。
HTML DOM 独立于平台和编程语言。它可被任何编程语言诸如 Java、JavaScript 和 VBScript 使用。
DOM对象,即是我们用传统的方法(javascript)获得的对象。
JQuery对象:
jQuery对象即是用jQuery类库的选择器获得的对象
jQuery对象就是通过jQuery包装DOM对象后产生的对象,它是jQuery独有的。如果一个对象是jQuery对象,那么就可以使用jQuery里的方法
区别:
在jQuery对象中无法使用DOM对象的任何方法
在DOM对象中无法使用JQuery对象的任何方法
两者之间互相使用方法时时需要先转换一下的
DOM对象 JQuery对象之间的转换
DOM对象转成jQuery对象:
对于已经是一个DOM对象,只需要用$()把DOM对象包装起来,就可以获得一个jQuery对象了。
jQuery对象转成DOM对象:
两种转换方式将一个jQuery对象转换成DOM对象:[index]和.get(index);
(1)jQuery对象是一个数据对象,可以通过[index]的方法,来得到相应的DOM对象。
(2)使用jquery的方法 .get(index)
四、工具方法(utility)
除了对选中的元素进行操作以外,还提供一些与元素无关的工具方法(utility)。不必选中元素,就可以直接使用这些方法。
如果你懂得Javascript语言的继承原理,那么就能理解工具方法的实质。
它是定义在jQuery构造函数上的方法,即jQuery.method(),所以可以直接使用。
而那些操作元素的方法,是定义在构造函数的prototype对象上的方法,即jQuery.prototype.method(),所以必须生成实例(即选中元素)后使用。
如果不理解这种区别,问题也不大,只要把工具方法理解成,是像javascript原生函数那样,可以直接使用的方法就行了。
常用的工具方法:
1 $.trim() 去除字符串两端的空格。 2 $.each() 遍历一个数组或对象。 3 $.inArray() 返回一个值在数组中的索引位置。如果该值不在数组中,则返回-1。 4 $.grep() 返回数组中符合某种标准的元素。 5 $.extend() 将多个对象,合并到第一个对象。 //即继承 6 $.makeArray() 将对象转化为数组。 7 $.type() 判断对象的类别(函数对象、日期对象、数组对象、正则对象等等)。 8 $.isArray() 判断某个参数是否为数组。 9 $.isEmptyObject() 判断某个对象是否为空(不含有任何属性)。 10 $.isFunction() 判断某个参数是否为函数。 11 $.isPlainObject() 判断某个参数是否为用"{}"或"new Object"建立的对象。 12 $.support() 判断浏览器是否支持某个特性。