jQuery原始碼分析

2021-07-09 16:50:10 字數 1641 閱讀 1145

工具/版本說明

版本號備註

jquery

2.1.1

sublime

3

jquery = function( selector, context ) 

jquery.fn = jquery.prototype =

//快速匹配正則 不加g;不光匹配整體項還會匹配到子項

rquickexpr = /^(?:\s*(<[\w\w]+>)[^>]*|#([\w-]*))$/,

init = jquery.fn.init = function( selector, context )

// handle html strings

if( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3)else

if( match && (match[1] || !context))內的title和html

if ( jquery.isfunction( this[ match ] ) ) else}}

}else

}else

// handle: $(expr, $(...))

// handle: $(expr, context)

// handle: $(domelement)

// handle: $(function)

return jquery.makearray( selector, this );

}init.prototype = jquery.fn;

1.1constructor
function aaa(){}

//物件導向中兩種寫法是有區別的

aaa.prototype

.name = "hello"

;//name與age只是向原型上進行新增處理

aaa.prototype

.age = 30

; aaa.prototype =

console.log(aaa.constructor)

console.log(aaa.prototype)

1.2屬性操作原理淺要分析
// jquery操作

$(function

());

//原生操作

var ali=document.getelementsbytagname('li');//$('li');

for (var i =0; i < ali.length; i++) ;

//jquery內原理操作分析

this = ;

//json無法進行for迴圈,只能進行for in

//但是這時的this可以進行for迴圈,因為以下標表示,且有length屬性

for(var i=0;i());

})

1.4merge
//陣列合併

var arr1=['a','b'];

//此合併成為乙個json

var arr1=

var arr2=['c','d'];

console.log($.merge(arr1, arr2))

jQuery原始碼分析

一 jquery如何做到不汙染變數名並暴露出 供使用者使用 jquery將變數和 寫進立即執行函式,通過函式來包裹所有的變數和方法,再在這個立即執行函式上將 jquery方法繫結到window上,就可以讓使用者使用到jq方法了。二 jquery是如何做到 jquery 的?function wind...

jQuery 原始碼分析

這篇文章可以說是讀這篇文章這篇文章後的總結。jquery最基本的構成結構 var jquery window.jquery window.function a,b jquery.fn jquery.prototype age function jquery.fn.init.prototype jqu...

jquery原始碼分析2

jquery原始碼分析系列2 results is for internal usage only 只是為了內部使用 makearray function arr,results else return ret 很多地方都使用了這個函式 判斷是否是陣列或者是類陣列 返回值是boolean funct...