Underscore原始碼閱讀極簡版入門

2022-02-08 15:45:13 字數 1549 閱讀 9559

看了網上的一些資料,發現大家都寫得太複雜,讓新手難以入門。於是寫了這個極簡版的underscore原始碼閱讀。

原始碼:1.1:架構

(function

();

this._=_;

}.call(

this));

1.2:引入exports判斷,如果不支援exports則繼續使用this

(function

();if (typeof exports !== 'undefined')

exports._ =_;

} else

}.call(

this));

1.3:對_進行進一步例項化判斷: 

(function

();

//匯出_

if (typeof exports !== 'undefined')

exports._ =_;

} else

}.call(

this));

第一步就先這到這裡,接下來就是常用函式的包裝了。先不用管其他函式。

(function

();

//匯出_

if (typeof exports !== 'undefined')

exports._ =_;

} else //

新增判斷boolean型別方法

_.isboolean = function

(obj) ;

}.call(

this));

恭喜你,接下來就可以直接使用_.isboolean了。

optimizecb,沒有太懂這裡cb是什麼,可能是context bound,上下文繫結,其實主要就是使用call改變this到當前func上。

var optimizecb = function

(func, context, argcount) ;

case 2: return

function

(value, other) ;

case 3: return

function

(value, index, collection) ;

case 4: return

function

(accumulator, value, index, collection) ;

}return

function

() ;

};

cb函式就呼叫了上面的函式,如果是傳入的value是function,就執行optimizecb;如果是object就直接matcher;否則_.property

var cb = function

(value, context, argcount) ;

鏈式呼叫chain,類似jquery的反覆呼叫

_.chain = function

(obj) ;

underscore原始碼閱讀整理

underscore是我閱讀的第乙份原始碼,這份 比較小巧,只有1500行,我閱讀的版本是1.8.3.underscore裡封裝了很多功能性的函式,和jquery不同,我覺得jquery的特點是對針對dom,而underscore裡都是基於js的功能性函式,比如each,map等等。以下內容僅是我閱...

underscore 原始碼閱讀 四

keys one two three 檢索object擁有的所有可列舉屬性的名稱。我們知道,在js中本就提供了幾個方法如for.in.object.keys來遍歷物件的屬性,為什麼underscore還是要封裝乙個api呢?這其實是為相容ie9版本下的乙個bug做的封裝 在ie9以下的版本中,以下 ...

underscore原始碼分析 1

underscore 版本1.83 最主要的乙個特性是鏈式呼叫 1,2,3 each console.log 1 0 3 1,2,3 2 1 3 1,2,3 3 2 3 1,2,3 我們先簡單的實現鏈式呼叫的功能 實現 each 1,2,3 console.log 是很簡單的 直接 each函式就搞...