二、构造jQuery对象0——总体结构
jQuery对象是由构造函数jQuery()创建的,$()是jQuery()的缩写。jQuery对象是一个类数组对象,里面包含了连续的整数属性、length属性和大量的jQuery方法。
构造函数的几种用法:
-
jQuery(),空参数,这个会直接返回一个空的 jQuery 对象,return this。属性length为0。
-
jQuery( selector ,context ),如果参数selector传入一个字符串参数,jQuery会检查这个字符串是选择器表达式还是HTML代码,参数context 表示选择范围,即限定作用,可为 DOM,jQuery 对象。
-
jQuery( element|elementArray ),用于将一个 DOM 对象或 DOM 数组封装成 jQuery 对象。
-
jQuery( jQuery object|object ),如果传入一个普通JavaScript对象,则把该对象封装到jQuery对象并返回。如果传入一个jQuery对象,则创建该jQuery对象的一个副本并返回,副本与传入的jQuery对象引用完全相同的DOM元素。
-
jQuery( html, ownerDocument |props)),如果参数html 是字符串先转成 DOM元素,后创建包含这些DOM元素引用的 jQuery 对象,如果html参数是一个单独标签,则会使用浏览器原生方法document.createElement()创建DOM元素,如果html参数是一个HTML片段,则利用浏览器的innerHTML机制创建DOM元素,这个过程有方法jQuery.buildFragment()和方法jQuery.clean()实现。参数ownerDocument用于指定创建新DOM元素的文档对象,如果不传入,则默认为当前文档对象。如果HTML是一个单独的标签,那么第二个参数可以是props,props是一个包含了属性、事件的普通对象;在调用document.createElement()创建DOM元素后,参数props会被传给jQuery.attr(),然后由.attr()负责把参数props中的属性、此时设置到创建的DOM元素上。
-
jQuery( callback ),如果传入一个函数,则在document上绑定一个ready事件监听函数,当DOM结构加载完成时执行。ready事件的触发要早于load事件。ready事件并不是浏览器原生事件,二十DOMContentLoaded事件、onreadystatechange事件和函数doScrollCheck()函数的统称。
// 构造jQuery对象,代码行:40——10365。 function ( window, noGlobal ) { //构造jQuery对象 //声明各种局部变量,代码行:46——124 // 代码行:131——471 var version = "3.3.1", //版本号 jQuery = function( selector, context ) { // 通常我们创建一个对象或实例的方式是在运算符new后紧跟一个构造函数,例: newDate()会返回一个Date对象;但是,如果构造函数有返回值,运算符new所创建的对象会被丢弃,返回值将作为new表达式的值。 // jQuery利用了这一特性,通过在构造函数jQuery()内部用运算符new创建并返回另一个构造函数的实例,省去了构造函数jQuery()前面的运算符new,即我们创建jQuery对象时,可以省略运算符new直接写jQuery()。 return new jQuery.fn.init( selector, context ); }, rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; // 为什么设置jQuery.fn指向构造函数jQuery()的原型对象jQuery.prototype?这是简写,可以少些七个字符,人类的共性就是:懒!😄 //各种原型属性和方法 jQuery.fn = jQuery.prototype = {}; jQuery.extend = jQuery.fn.extend = function () {}; //各种静态属性和方法 jQuery.extend({}); // 代码行:10356——10363 // 把jQuery挂载到window if ( !noGlobal ) { window.jQuery = window.$ = jQuery; } return jQuery; }

浙公网安备 33010602011771号