JQuery設計模式之原始碼分析 三

2021-10-16 08:59:43 字數 2453 閱讀 7878

$.callbacks作用: $.callbacks用於管理函式佇列。

$.callbacks的使用: 我們通過呼叫$.callbacks(options)獲取到乙個callbacks例項

內部api分別有:

add => 向內部佇列新增函式

fire依次執行佇列裡的函式

構造引數分別有:

「stoponfalse」 => 內部佇列裡的函式是依次執行的,當某個函式的返回值是false時停止繼續執行剩下的函式

「memory」 => 當函式佇列fire一次後內部會記錄當前fire的引數。當下次呼叫add的時候,會把記錄的引數傳遞給新新增的函式並立即執行這個新新增的函式。

(

function

(root)

var _ =

;var list =

// 佇列新增處理函式

var index,length,testting,memory,start,starts

varfire

=function

(data)}}

var self =})

if(memory)

return

this},

// 上下文的繫結

firewith:

function

(context,arguments)},

// 依次執行佇列裡的函式

fire:

function()

,// inarray作為乙個介面對外使用

has:

function

(fn,array)

,// 判斷陣列中是否存在某元素

inarray:

function

(elem,arr)

}return self

}}// 建立引數

function

createoptions

(options)

var object = optionscache[options]

=// 可按空格分割字串成陣列時遍歷分割字串

options.

split

(/\s+/).

foreach

(value =>);

return object // 返回當前建立的引數物件

} root.$ = _;})

(this

)// this指向當前window物件

**舉例理解如下:

/** * 如果當作類使用時,this指向當前例項物件

* 如果當作建構函式使用時,this指向window

* 如果作函式使用時fn是function例項物件存在

*/functionfn(

)newfn(

)// 當作類使用,this指向當前例項物件fn(

)// 當作函式使用,this指向當前window物件

console.

log(fn.

(object)

)// 呼叫當前fn函式,改變它內部this的指向

/** * 模擬slice.call呼叫方式

*/array.prototype.

myslice

=function

(start,end)

return result

}function

fn(a,b,c,d)

console.

log(fn(

1,2,

3,4)

)/**

*/function

fn(a,b,c,d)

var obj =fn.

call

(obj,1,

2,3,

4)// 列印結果為:this指向=> object a,b,c,d=> 1 2 3 4fn.

(obj,[1

,2,3

,4])

// 列印結果為:this指向=> object a,b,c,d=> 1 2 3 4

/** * function原型方法bind的使用

*/var fnbind =fn.

bind

(obj,5,

4)// 建立fn的副本

console.

log(

fnbind(3

,2))

// 列印結果為:this指向=> object a,b,c,d=> 1 2 3 4

<

/script>

jQuery深入之原始碼解析(四) 分離構造器

繼續來看建構函式 var jquery function selector,context jquery.fn jquery.prototype 和jquery.fn.extend 用於合併兩個或多個物件的屬性到第乙個物件 jquery.extend jquery.fn.extend functio...

(一) Mybatis 原始碼解析之原始碼概述

原始碼結構圖 基礎支撐層 技術元件專注於底層技術實現,通用性較強無業務含義 核心處理層 業務元件專注 mybatis 的業務流程實現,依賴於基礎支撐層 介面層 mybatis 對外提供的訪問介面,面向 sqlsession 程式設計 原始碼腦圖結構 原始碼結構圖 建議和腦圖一起看,了解每個包存在的意...

Linux學習之原始碼安裝

步驟 以nginx為例 2.檢視原始碼 我們看到,src目錄下都是.c或者是.h的檔案,是c語言的原始碼 src下的內容為 3.準備安裝環境 我們看到其原始碼是c語言,那麼我們要安裝gcc等工具 我們首先通過yum進行查詢yum grouplist 找到development tools然後檢視這個...